我正在连接到Amazon Product Advertising API,为了签署我的请求,我需要对HMAC-SHA 256哈希的原始二进制输出进行base64编码。
在the PHP documentation for hash_hmac中,第四个参数bool $raw_output
控制输出是原始二进制数据(true)还是小写十六进制数据(false)。
然而,我现在试图将其移植到Javascript。我尝试使用CryptoJS.HmacSHA256()函数,但它似乎返回小写十六进制。我如何将其转换为二进制?
我根据CryptoJS文档尝试了以下操作,但两个输出都是相同的:
var hash = CryptoJS.HmacSHA256("hello", "key");
console.log(hash.toString());
console.log(hash.toString(CryptoJS.enc.Base64));
6条答案
按热度按时间z8dt9xmd1#
这在他们的文档中有解释。试试这个:
你需要包括http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js。如果你没有包括它,
CryptoJS.enc.Base64
将是undefined
并回退到默认值。工作演示:http://jsfiddle.net/ak5Qm/
cyvaqqii2#
PHP:
Nodejs等效:
t8e9dugd3#
php代码
php输出
节点码
节点输出
i34xakig4#
你也可以使用这个npm包在Javascript中做同样的事情。
tv6aics15#
这对我很有效:
它给出了与PHP中完全相同的结果:
vuv7lop36#
对于Web浏览器: