Я подозреваю, что ваша библиотека SHA python возвращает кодировку, отличную от ожидаемой библиотекой b64encode.Моя библиотека выполняет и SHA, и base64 за один вызов, поэтому я должен выполнить дополнительную работу для проверки результатов.
Как показано в вашем KRL, правильный синтаксис:
math: hmac_sha1_base64 (raw_string,ключ);
математика: hmac_sha256_base64 (raw_string, ключ);
В них используются те же библиотеки, которые я использую для модуля Amazon, который сейчас тестируется нормально.
Для конкретного тестирования этих подпрограмм я использовал векторы тестирования изRFC ( sha1 , sha256 ).Мы изначально не поддерживаем шестнадцатеричный формат, поэтому я не смог использовать все тестовые векторы, но я смог использовать простой:
HMAC SHA1
test_case = 2
key = "Jefe"
key_len = 4
data = "что ты ни за что не хочешь?"
data_len = 28
digest = 0xeffcdf6ae5eb2fa2d27416d5f184df9c259a7c79 * 10*
HMAC SHA256
Ключ = 4a656665 ("Jefe")
Данные = 7768617420646f2079612077616e7420666f72206e6f7468696e673f (не хотите?)1036 * 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_fs6s6646s6f6/ zfauXrL6LSdBbV8YTfnCWafHk ';
var bhs256c =' 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843 ';
var bhs256WJWRWR6
Результаты HEX для SHA1 и SHA256 соответствуют векторам теста простого случая.
Я протестировал результаты base64, расшифровав результаты HEX и передав их через кодировщик base64 здесь
Мои результаты были:
7 / zfauXrL6LSdBbV8YTfnCWafHk =
W9zBRr9gdU5qBCQmCJV1x1oAPwidJzmDnexYuWTs60 * * 10 * * * * * * * * * * * 1и HMAC SHA256 base64 соответственно.
Если у вас все еще есть проблемы, не могли бы вы предоставить мне base64 и SHA, полученные по отдельности от python, чтобы я мог определить разъединение?