KRL:与HMAC_SHA1
签名请求我做了一个测试套件数学:hmac_ * KRL功能。我将KRL结果与Python结果进行比较。 KRL给了我不同的结果。KRL:与HMAC_SHA1
代码:https://gist.github.com/980788结果:http://ktest.heroku.com/a421x68
我怎样才能得到KRL有效签名?我假设他们的Python结果是正确的。
UPDATE:除非你想在消息中换行字符,它工作正常。如何签名包含换行符的字符串?
我怀疑你的Python库SHA返回不同的编码由b64encode库预期。我的库在一次调用中同时执行SHA和base64,因此我需要做一些额外的工作来检查结果。如您在KRL中显示的,正确的语法是:
math:hmac_sha1_base64(raw_string,key);
数学:hmac_sha256_base64(raw_string,密钥);
这些用,我使用亚马逊模块,目前正在测试精细的同一个库。
为了具体测试那些例程,我使用了RFC(sha1,sha256)的测试向量。我们不支持原生的十六进制,所以我不能够使用所有的测试向量,但我可以用一个简单的:
HMAC SHA1
test_case = 2
键= “人Jefe”
key_len = 4
数据= “做雅想要的东西白白?”
DATA_LEN = 28
消化= 0xeffcdf6ae5eb2fa2d27416d5f184df9c259a7c79
HMAC SHA256
重点= 4a656665( “人Jefe”)
数据= 7768617420646f2079612077616e7420666f72206e6f7468696e673f(“做雅想要的东西白白?“)
HMAC-SHA-256 = 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843
这是我的代码:
变种HMAC_SHA1 = 'effcdf6ae5eb2fa2d27416d5f184df9c259a7c79';
变种hmac_sha1_64 = '7/zfauXrL6LSdBbV8YTfnCWafHk';
var bhs256c ='5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843';
var b 'hs256c64 ='W9zBRr9gdU5qBCQmCJV1x1oAPwidJzmDnexYuWTsOEM';
SHA1和SHA256的HEX结果与简单情况的测试向量相匹配。
7/zfauXrL6LSdBbV8YTfnCWafHk =
W9zBRr9gdU5qBCQmCJV1x1oAPwidJzmDnexYuWTsOEM =
:
我通过解码HEX结果,并把它们通过的base64编码器here
我的结果是所测试的BASE64结果它们分别与我的HMAC SHA1 base64和HMAC SHA256 base64的计算结果相匹配。
如果你仍然有问题,你能否分别向我提供python的base64和SHA结果,以便我可以识别断开连接?
我的问题似乎是'\ n'。如果我在>内使用实际的换行符,我会得到正确的十六进制值。 base64的不完全正确(遗漏了'='的结尾,请访问http://ktest.heroku.com/a421x68查看更新结果。 – 2011-05-20 04:55:02
是的,对于base64,库不会填充到4的倍数。这是这是文档中省略的摘要函数的重要脚注:重要提示:这些不会将BASE64输出填充到4的倍数! 请参阅:http://search.cpan.org/~mshelor/Digest-SHA- 5.61/lib目录/摘要/ SHA.pm#PADDING_OF_BASE64_DIGESTS – MEH 2011-05-23 21:15:39
StackOverflow是一个问题和答案网站。你的问题是什么?如果这不是问题,您应该通过他们提供的沟通渠道联系Kynetx。 – 2011-05-19 17:09:55
好点,抱歉没有问题。编辑修复。 – 2011-05-19 17:22:22
cf https://convore.com/kynetx/hmac-test-cases/ – 2011-05-19 17:22:45