首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KRL:使用HMAC_SHA1签名请求

KRL:使用HMAC_SHA1签名请求
EN

Stack Overflow用户
提问于 2011-05-20 01:02:20
回答 1查看 645关注 0票数 3

我为math:hmac_* KRL函数做了一个测试套件。我将KRL结果与Python结果进行了比较。KRL给了我不同的结果。

代码:https://gist.github.com/980788结果:http://ktest.heroku.com/a421x68

如何从KRL获得有效的签名?我假设他们的Python结果是正确的。

更新:它工作得很好,除非你想在消息中使用换行符。如何对包含换行符的字符串进行签名?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-20 08:59:33

我怀疑您的python SHA库返回的编码与b64encode库期望的编码不同。我的库在一个调用中同时执行了SHA和base64,所以我需要做一些额外的工作来检查结果。

正如您在KRL中所示,正确的语法是:

math:hmac_sha1_base64(raw_string,key);

math:hmac_sha256_base64(raw_string,key);

它们使用的库与我用于Amazon模块的库相同,该模块目前正在测试中。

为了专门测试这些例程,我使用了RFC (sha1sha256)中的测试向量。我们本机不支持十六进制,所以我不能使用所有的测试向量,但我可以使用一个简单的向量:

HMAC SHA1

test_case =2

key = "Jefe“

key_len =4

data =“你什么都不想要?”

data_len = 28

摘要= 0xeffcdf6ae5eb2fa2d27416d5f184df9c259a7c79

HMAC SHA256

密钥= 4a656665 ("Jefe")

Data = 7768617420646f2079612077616e7420666f72206e6f7468696e673f (“你什么都不想要?”)

HMAC-SHA-256 = 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843

下面是我的代码:

代码语言:javascript
复制
global {  
        raw_string = "what do ya want for nothing?";  
        mkey = "Jefe";  
    }

rule first_rule {
        select when pageview ".*" setting ()
        pre {
            hmac_sha1 = math:hmac_sha1_hex(raw_string,mkey);
            hmac_sha1_64 = math:hmac_sha1_base64(raw_string,mkey);
            bhs256c = math:hmac_sha256_hex(raw_string,mkey);
            bhs256c64 = math:hmac_sha256_base64(raw_string,mkey);

        }
        {
        notify("HMAC sha1", "#{hmac_sha1}") with sticky = true;
        notify("hmac sha1 base 64", "#{hmac_sha1_64}") with sticky = true;
            notify("hmac sha256", "#{bhs256c}") with sticky = true;
            notify("hmac sha256 base 64", "#{bhs256c64}") with sticky = true;
        }
}

var hmac_sha1 = 'effcdf6ae5eb2fa2d27416d5f184df9c259a7c79';

var hmac_sha1_64 = '7/zfauXrL6LSdBbV8YTfnCWafHk';

'5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843';bhs256c = var

'W9zBRr9gdU5qBCQmCJV1x1oAPwidJzmDnexYuWTsOEM';bhs256c64 = var

SHA1和SHA256的十六进制结果与简单情况下的测试向量相匹配。

我通过解码十六进制结果并将它们放入base64编码器here来测试base64结果

我的结果是:

7/zfauXrL6LSdBbV8YTfnCWafHk=

W9zBRr9gdU5qBCQmCJV1x1oAPwidJzmDnexYuWTsOEM=

这分别与我对HMAC SHA1 base64和HMAC SHA256 base64的计算结果相符。

如果你仍然有问题,你能给我单独提供python的base64和SHA结果,这样我就可以识别断开的原因了吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6062201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档