Я переношу свой код люмена на python, для функции hmac у меня есть это:
PHP
$hash = hash_hmac(
'sha256',
'[email protected]',
'message'
);
Питон 3
import hmac
import hashlib
user_hash = hmac.new(b'[email protected]', b'message', hashlib.sha256).hexdigest()
Проблема в том, что оба результата не совпадают:
Вывод PHP
413777aac2561ca3acd6d49c95df9ecae4c6e2f6bc9adc40bbb77650d7b4c459
Вывод Python
42879f50e909799d93b835a81a65c03cf78a56ef1c038ac75c8ab3f211d083ea
Я предполагаю, что проблема в том, как Python 3 интерпретирует строку, но я не могу понять это. Любая помощь, пожалуйста?






Порядок аргументов для HMAC имеет значение:
>>> hmac.new(b'[email protected]', b'message', hashlib.sha256).hexdigest()
'42879f50e909799d93b835a81a65c03cf78a56ef1c038ac75c8ab3f211d083ea'
>>> hmac.new(b'message', b'[email protected]', hashlib.sha256).hexdigest()
'413777aac2561ca3acd6d49c95df9ecae4c6e2f6bc9adc40bbb77650d7b4c459'
В hmac.new первый аргумент — это key (начальный ключ для хеша), а второй аргумент — это msg, сообщение, которое нужно переварить.
В чем ваш секрет и какой у вас текст? Если вы поменяете местами
[email protected]иmessage, вывод будет таким же, как с python