簡體   English   中英

KRL:使用HMAC_SHA1簽署請求

[英]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( sha1sha256 )中的測試向量。 我們原生不支持十六進制,所以我無法使用所有測試向量,但我能夠使用一個簡單的:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM