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()
для удаления пробелов
