hash_hmac()在JavaScript中
问题描述:
RAW二进制输出我有PHP代码生成hash_hmachash_hmac()在JavaScript中
key = base64_encode(hash_hmac('sha1',$public_key, $private_key,TRUE));
我已经试过CryptoJS库来解决这个问题。
根据文档:
var public_key = 'msg',
private_key = 'key';
var hash = CryptoJS.HmacSHA1(public_key, private_key)
我不知道如何将原始输出设置为二进制等来设定$raw_output
在PHP true
。
任何人都可以帮助我吗?
谢谢:)
答
PHP代码
echo base64_encode(hash_hmac('SHA1', 'shanghai', '0', true).'beijing');
PHP输出
xvBv49PpaYvXAIfy3iOSDWNQj89iZWlqaW5n
节点代码
var crypto = require('crypto');
var buf1 = crypto.createHmac("sha1", "0").update("shanghai").digest();
var buf2 = Buffer.from('beijing');
console.log(Buffer.concat([buf1, buf2]).toString('base64'));
节点输出
xvBv49PpaYvXAIfy3iOSDWNQj89iZWlqaW5n
使用'btoa(散列)' – dandavis
CryptoJS不提供编码器来获取“二进制字符串”。为什么你甚至需要它?在处理JavaScript中的二进制数据时存在各种各样的问题。 Hex('hash.toString()')有什么问题? –