AWS hmac加密的差异

时间:2018-06-15 09:16:05

标签: amazon-web-services encryption sha256 hmac

我面临一个非常奇怪的问题,并且花了3天多的时间。我正在浏览AWS的签名请求第4版文档,并正在调查他们的HMAC签名过程。

我正在使用node-forge根据给定的字符串和密钥计算HMAC-sha256,使用此AWS文档:https://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html

这些字符串与文档对UTF-8所说的文档完全相同:

const hash_type = 'sha256';
const hmac = forge.hmac.create();
const key = forge.util.encodeUtf8('c4afb1cc5771d871763a393e44b703571b55cc28424d1a5e86da6ed3c154a4b9');
const string = forge.util.encodeUtf8('AWS4-HMAC-SHA256\n' +
  '20150830T123600Z\n' +
  '20150830/us-east-1/iam/aws4_request\n' +
  'f536975d06c0309214f805bb90ccff089219ecd68b2577efef23edd43b7e1a59');
hmac.start('sha256', key);
hmac.update(string);
console.log('SIGNATURE: ' +  hmac.digest().toHex());

我的功能,以及我在线使用的每一个HMAC计算器都将计算后的哈希值设为fe52b221b5173b501c9863cec59554224072ca34c1c827ec5fb8a257f97637b1

即使他们为javascript和python提供的AWS代码也派生了相同的值并计算了与我收到的相同的哈希值。

但是,根据他们的文档中的文档,它应该是: 5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7

我已经尝试了超过10个以上的计算器,这些计算器都返回了我收到的相同值,直到我找到1个在线计算器,只有1个,计算与https://cryptii.com/hmac处的亚马逊相同

我知道HMAC是一个绝对的数学函数,相同的输入会给出相同的输出,这意味着输入是不同的,或者它是以一种从我身上抽象出来的方式被转换的。

任何提示?

0 个答案:

没有答案