md5 в Python и PHP не совпадают суммы

Нахожу md5 от json в php

$data =  ['key1'=> 'value1', 'key2'=> 'value2'];
$key = 'key';
echo md5(json_encode($data).$key);

Получаю 07f62bada07fee33ce3797465a7d8197

код

Делаю тоже самое в python

import json
import hashlib
 
payload = {'key1': 'value1', 'key2': 'value2'}
 
k = 'key'.encode()
y = json.dumps(payload).encode()
m = hashlib.md5(y+k).hexdigest()
print(m)

Получаю 968d4b64e6859dd0f1c725078e957652

код

Что только не перепробовал. Результат всегда разный. Единственное если просто строку подставить, тогда результат одинаковый.


Ответы (1 шт):

Автор решения: Vadim.Sharoikin

Долго ломал голову пока чуть-ли не в каждой строке писал print и смотрел что выводит. если вывести

print(json.dumps(payload).encode())

и всмотреться в результат в консоли

введите сюда описание изображения

то видны три лишних пробела. после того как их убрать, например так

y = json.dumps(payload).replace(' ', '').encode()

результат

m = hashlib.md5(y+k).hexdigest()

будет

07f62bada07fee33ce3797465a7d8197

UPD

используйте

y = json.dumps(payload, separators=(',', ':')).encode()

для удаления пробелов

→ Ссылка