gpt4 book ai didi

php - OpenSSL HMAC-SHA1 摘要与 Crypto 的不匹配

转载 作者:搜寻专家 更新时间:2023-10-31 20:42:01 27 4
gpt4 key购买 nike

我已经花了 6 个小时来实现消息签名算法。它根本不起作用:

这是生成摘要的 PHP 代码:

$payload = "thisisanapple";
$signature = hash_hmac("sha1", $payload, "thisisarandomkey");
$data = base64_encode($signature);
// YzExZWRmZDliMjQzNTZjNzhlNmE3ZTdmMDE3ODJjNmMxMmM4ZTllMQ==

这是在 Node.js 服务器上运行的 JS,做同样的事情:

var hmac = crypto.createHmac('sha1', "thisisarandomkey");
hmac.update("thisisanapple");
var signature = hmac.digest('base64');
// wR7f2bJDVseOan5/AXgsbBLI6eE=

我不知道这里出了什么问题。我已经尝试过 SHA256,但它们仍然不同。我还使用了由 OpenSSL 生成的私钥,无论是明文还是 base64,结果仍然相同(不同的 key )。

最佳答案

hash_hmac 有四个参数,最后一个参数指定输出,默认情况下 hash_hmac 返回十六进制字符串,而不是原始数据。所以 base64_encode 在 PHP 代码片段中对十六进制字符串进行编码。

这个会很好用:

$payload = "thisisanapple";
$signature = hash_hmac("sha1", $payload, "thisisarandomkey", true);
$data = base64_encode($signature);
// wR7f2bJDVseOan5/AXgsbBLI6eE=

关于php - OpenSSL HMAC-SHA1 摘要与 Crypto 的不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19884738/

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