gpt4 book ai didi

encryption - 为什么我的 crypto.createHmac() 会为相同的输入生成不同的 HMAC?

转载 作者:行者123 更新时间:2023-12-01 01:51:15 30 4
gpt4 key购买 nike

我正在尝试将 Node.js 中的 HMAC 与 PHP 中的 HMAC 进行匹配以进行 API 授权。问题在于 Node.js 中,createHmac() 函数为相同的输入生成不同的 HMAC,因此与 PHP 中的 HMAC 不匹配。

这是我的 JS 代码:

events: {
proxyReq: (proxyReq, req) => {
const API_KEY = 125;
const API_SECRET_KEY = 'abc';

let hmac = crypto.createHmac('sha512', API_SECRET_KEY);
hmac.update('0');
const s = hmac.digest('base64');

proxyReq.setHeader('x-api-key', API_KEY);
proxyReq.setHeader('x-api-signature', s);
proxyReq.setHeader('x-api-date', date);
},

PHP:

$API_SECRET_KEY = 'abc';
$client_signature = $request->header('x-api-signature');
$hmac = base64_encode(hash_hmac('sha512', '0', base64_decode($API_SECRET_KEY), true));

Log::error($client_signature);
Log::error($hmac);

最新输出:

[2018-07-11 15:25:28] local.ERROR: dO50o/LcS0/UOXOu/5lHbOMXLe+l225vUU13fWEHeOoUHV7SlcSOE9rQq2UhTlys5N6C4hkq8QTALnpRehtlCg==  
[2018-07-11 15:25:28] local.ERROR: 7W2U/3uEKIMD0s39jmZLlJItwTcSSDQdW7WTYdslvIjuUeGydyqwwAuZzaMP0Do5v1zRJxmPITFdy4EHTY5r6A==

[2018-07-11 15:25:33] local.ERROR: UYsXZFyoAB2zELZzwjWyktPEHlYqIP3cgLeb/LXK0X8pnkVxiqEaFWK7c1YIWd6hFPpZHn5j1YdbDhpAL7hQ5A==
[2018-07-11 15:25:33] local.ERROR: 7W2U/3uEKIMD0s39jmZLlJItwTcSSDQdW7WTYdslvIjuUeGydyqwwAuZzaMP0Do5v1zRJxmPITFdy4EHTY5r6A==

任何替代方案或解决方案将不胜感激!

最佳答案

您正在 PHP 中进行 base64_decode 加密,但不在 Node 中进行加密。删除base64_decode,您将得到:

gvRZ6BJer/YEkwdJ2OrTetIt1Knza5Vr0ZZ/inV5ySkFW4PBnO77c19L7TFpy9c4FA98/OcK/pB8Gvumwo4CQw==

这与我在测试您的 JavaScript 代码时得到的结果相符。

关于encryption - 为什么我的 crypto.createHmac() 会为相同的输入生成不同的 HMAC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51483325/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com