![](/img/trans.png)
[英]nodejs crypto and CryptoJS giving different base64(sha256(data)) outputs
[英]Hmac sha256 base64 and CryptoJS diffrent for nodejs crypto
假设我们有简单的 msg 和 key:
消息 = '简单'
private_key = '123456789'; 在 CryptoJS 的 angular 项目中使用它:
const signature = CryptoJS.HmacSHA256('simple', '123456789');
const signatureBase = signature.toString(CryptoJS.enc.Base64);
对我来说结果是:
lvs7rQTe1EDTLAS1GVWWsNG5ZaYVCh9aaYc+NoEunC4=
在 msg 中使用它并在节点中输入:
var hmacsignature = crypto.createHmac('sha256', new Buffer("123456789", "base64"))
.update("simple")
.digest()
.toString('base64');
结果是:
nYu2PGqfRDWnHbT649q0gc+7DcIq8iwcwHAQQa5T2HY=
你能告诉我哪个是正确的,如何得到同样的东西是有角度的?
谢谢
在浏览器中字符串编码通常是 UTF-8,所以使用 UTF-8 作为字符串编码应该修复它。 顺便说一句,您应该在两侧显式设置字符串编码以确保获得相同的结果。
var hmacsignature = crypto.createHmac('sha256', Buffer.from('123456789', 'utf8'))
.update("simple")
.digest()
.toString('base64');
并且new Buffer(string)
已弃用,如果可以,请使用Buffer.from(string[, encoding])
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.