[英]KRL: Signing requests with HMAC_SHA1
我為數學創建了一個測試套件:hmac_ * KRL函數。 我將KRL結果與Python結果進行比較。 KRL給了我不同的結果。
代碼: https : //gist.github.com/980788結果: http : //ktest.heroku.com/a421x68
如何從KRL獲得有效簽名? 我假設他們的Python結果是正確的。
更新:除非您想在郵件中添加換行符,否則它可以正常工作。 如何簽署包含換行符的字符串?
我懷疑你的python SHA庫返回的編碼與b64encode庫所期望的編碼不同。 我的庫在一次調用中同時執行SHA和base64,所以我要做一些額外的工作來檢查結果。
正如您在KRL中顯示的那樣,正確的語法是:
數學:hmac_sha1_base64(raw_string,鍵);
數學:hmac_sha256_base64(raw_string,鍵);
這些庫使用的是我用於亞馬遜模塊的相同庫,它現在正在進行測試。
為了具體測試這些例程,我使用了RFC( sha1 , sha256 )中的測試向量。 我們原生不支持十六進制,所以我無法使用所有測試向量,但我能夠使用一個簡單的:
HMAC SHA1
test_case = 2
key =“Jefe”
key_len = 4
data =“你什么都不想要?”
data_len = 28
digest = 0xeffcdf6ae5eb2fa2d27416d5f184df9c259a7c79
HMAC SHA256
鍵= 4a656665(“Jefe”)
數據= 7768617420646f2079612077616e7420666f72206e6f7468696e673f(“你什么都不想要?”)
HMAC-SHA-256 = 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843
這是我的代碼:
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';
var bhs256c ='5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843';
var bhs256c64 ='W9zBRr9gdU5qBCQmCJV1x1oAPwidJzmDnexYuWTsOEM';
SHA1和SHA256的HEX結果與簡單情況的測試向量匹配。
我通過解碼HEX結果並將它們通過base64編碼器來測試base64結果
我的結果是:
7 / zfauXrL6LSdBbV8YTfnCWafHk =
W9zBRr9gdU5qBCQmCJV1x1oAPwidJzmDnexYuWTsOEM =
這與我對HMAC SHA1 base64和HMAC SHA256 base64的計算分別相符。
如果你仍然遇到問題,你可以單獨向我提供python的base64和SHA結果,這樣我就可以識別斷開連接嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.