繁体   English   中英

用于 nodejs 加密的 Hmac sha256 base64 和 CryptoJS 不同

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM