假设我们有简单的消息和密钥:
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 =
你能告诉我哪一个是正确的,如何得到同样的东西是有角度的?
由于
答案 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])
。