我正在测试 Paw 应用程序,它很棒。开发人员做了出色的工作,看来他真的很喜欢他的应用程序。
我发现当输入包含反斜杠字符或使用它的组合“\n”(不带引号)时,HMAC Sha256 Crypto 函数不会返回预期的哈希值。
例子:
输入:GET\n/test/api
钥匙:BE8B3551-1892-4544-9FDC-EC0B2C8608F8
结果: f9VF6Sy0oq645lKRcXF3N96aPZLy8qhwrbJconOJhEI=
预期的: VciY9BUCzL3KUUvFtmcRSuP2N5IkQ2gLvjjYgd3T9Uc=
我正在使用基于 CryptoJS 脚本的下一个 javascript 代码为我正在测试的 API 生成正确的哈希:
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha256.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>
<script>
var message = 'GET\n/test/api';
var key = 'BE8B3551-1892-4544-9FDC-EC0B2C8608F8';
var hash = CryptoJS.HmacSHA256(message, key);
var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
document.write(hashInBase64);
</script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha256.js" ></script>