我正在连接到亚马逊产品广告 API,要签署我的请求,我需要对原始二进制文件HMAC-SHA256 哈希的输出。
In hash_hmac 的 PHP 文档 http://php.net/manual/en/function.hash-hmac.php,第四个参数bool $raw_output
控制输出是原始二进制数据 (true) 还是小写十六进制数据 (false)。我的程序在 PHP 中运行,只需将该参数设置为 true 即可。
不过,我现在正尝试将其移植到 Javascript。我尝试使用 CryptoJS.HmacSHA256() 函数,但它似乎返回小写十六进制。我怎样才能将其转换为二进制?
我根据 CryptoJS 文档尝试了以下操作,但两个输出是相同的:
var hash = CryptoJS.HmacSHA256("hello", "key");
console.log(hash.toString());
console.log(hash.toString(CryptoJS.enc.Base64));
这是在他们的解释中解释的文档 http://code.google.com/p/crypto-js/#The_Hasher_Output。尝试这个:
var hash = CryptoJS.HmacSHA256("Message", "Secret Passphrase");
var base64 = hash.toString(CryptoJS.enc.Base64);
您需要包括http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js为了这。如果你不包括这个,CryptoJS.enc.Base64
将undefined
并回退到默认值。
工作演示:http://jsfiddle.net/ak5Qm/ http://jsfiddle.net/ak5Qm/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)