HMAC python отличается от HMAC php - PullRequest
0 голосов
/ 14 марта 2019

Я переношу свой код просвета в python, для функции hmac у меня есть это:

PHP

$hash = hash_hmac(
  'sha256',
  'user@email.com', 
  'message'
);

Python 3

import hmac
import hashlib

user_hash = hmac.new(b'user@email.com', b'message', hashlib.sha256).hexdigest()

Проблема в том, что оба результата не совпадают:

Вывод PHP

413777aac2561ca3acd6d49c95df9ecae4c6e2f6bc9adc40bbb77650d7b4c459

Вывод Python

42879f50e909799d93b835a81a65c03cf78a56ef1c038ac75c8ab3f211d083ea

Я думаю, проблема в том, как Python 3 интерпретирует строку, но я не могу понять это.Любая помощь, пожалуйста?

1 Ответ

1 голос
/ 14 марта 2019

Порядок аргументов HMAC имеет значение:

>>> hmac.new(b'user@email.com', b'message', hashlib.sha256).hexdigest()
'42879f50e909799d93b835a81a65c03cf78a56ef1c038ac75c8ab3f211d083ea'

>>> hmac.new(b'message', b'user@email.com', hashlib.sha256).hexdigest()
'413777aac2561ca3acd6d49c95df9ecae4c6e2f6bc9adc40bbb77650d7b4c459'

В hmac.new первый аргумент - key (начальный ключ для хэша), а второй аргумент - этоmsg, сообщение для переваривания.

...