【发布时间】:2013-12-02 09:02:17
【问题描述】:
我已经花了 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,结果仍然相同(不同的密钥)。
【问题讨论】:
标签: php node.js digest hmacsha1