1

我正在测试 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>

4

1 回答 1

0

这里的问题是 Paw 解释你的\n字符串实际上是字符\后跟字符n而不是换行符。

您可以做的是通过按 Option/Alt + Enter 来插入一个实际的换行符。(该字段会出现视觉故障,您一次只能看到一条线,但结果将是正确的)

HMAC-256 用爪子签名

于 2015-08-07T13:31:46.897 回答