HMAC Python отличается от HMAC php

Я переношу свой код люмена на 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 интерпретирует строку, но я не могу понять это. Любая помощь, пожалуйста?

В чем ваш секрет и какой у вас текст? Если вы поменяете местами [email protected] и message, вывод будет таким же, как с python

kuh-chan 14.03.2019 18:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
600
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Порядок аргументов для 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, сообщение, которое нужно переварить.

Другие вопросы по теме