MD4 га sh код, сгенерированный из Python, отличается от онлайн. Я знаю, это должно быть из-за кодировки. Вы можете помочь?
from Crypto.Hash import MD4
psk = 'The quick brown fox jumps over the lazy dog'
h = MD4.new()
h.update(psk.encode('UTF-16LE'))
print(f'UTF-16LE: {h.hexdigest()}')
h.update(psk.encode('UTF-16'))
print(f'UTF-16: {h.hexdigest()}')
h.update(psk.encode('UTF-8'))
print(f'UTF8: {h.hexdigest()}')
h.update(psk)
print(f'UTF8?: {h.hexdigest()}')
Результаты ha sh для 'Быстрая коричневая лиса перепрыгивает через ленивую собаку' в различных кодировках:
UTF-16LE: 4e6a076ae1b04a815fa6332f69e2e231
UTF-16: db8ae265b09c6ffa1e2fc163d66f64a4
UTF8: 324563ee68cc8009c82778d70d958723
UTF8?: 1aaf934b705b1d2aab69b0cf2a9cd87b
Онлайн MD4 га * Функция 1032 * (https://emn178.github.io/online-tools/md4.html) выдаст
1bee69a46ba811185c194762abaeae90
Обновление :
Спасибо за комментарий, я обновил код:
import getpass
from Crypto.Hash import MD4
psk = 'The quick brown fox jumps over the lazy dog' #getpass.getpass()
h = MD4.new(data=psk.encode('UTF-16LE'))
print(f'UTF-16LE: {h.hexdigest()}')
h = MD4.new(data=psk.encode('UTF-16'))
print(f'UTF-16: {h.hexdigest()}')
h = MD4.new(data=psk.encode('UTF-8'))
print(f'UTF8: {h.hexdigest()}')
h = MD4.new(data=psk)
print(f'UTF8?: {h.hexdigest()}')
Новый вывод
UTF-16LE: 4e6a076ae1b04a815fa6332f69e2e231
UTF-16: c6274a58a30e434503b45d2ce95e6c19
UTF8: 1bee69a46ba811185c194762abaeae90
UTF8?: 1bee69a46ba811185c194762abaeae90
Я также обнаружил, что https://emn178.github.io/online-tools/md4.html использует UTF-16, хотя я передал ему файл с UTF-16LE кодировка.
WPA2 Enterprise требует, чтобы текст был закодирован в UTF-16LE.