2016-03-06 222 views
2

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

任何人都可以帮助我吗?

谢谢:)

+0

使用'btoa(散列)' – dandavis

+0

CryptoJS不提供编码器来获取“二进制字符串”。为什么你甚至需要它?在处理JavaScript中的二进制数据时存在各种各样的问题。 Hex('hash.toString()')有什么问题? –

回答

0

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 
相关问题