对于nodejs加密,Hmac sha256 base64和CryptoJS不同

时间:2018-02-24 15:48:28

标签: javascript node.js angular cryptojs

假设我们有简单的消息和密钥:

message ='简单'

private_key =' 123456789&#39 ;; 在使用CryptoJS的角度项目中使用它:

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 =

你能告诉我哪一个是正确的,如何得到同样的东西是有角度的?

由于

1 个答案:

答案 0 :(得分:1)

在浏览器中,字符串编码通常是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])