fonction Python MD4 ne peut pas générer un code de hachage comme dans le générateur de hachage MD4 en ligne

yoonghm:

MD4 code de hachage généré à partir de Python sont différents de la ligne. Je sais que cela doit être dû à l'encodage. Pouvez-vous aider?

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()}')

Les sorties de hachage pour « Le renard brun rapide saute par-dessus le chien paresseux » dans un codage différent sont les suivants:

UTF-16LE: 4e6a076ae1b04a815fa6332f69e2e231
UTF-16:   db8ae265b09c6ffa1e2fc163d66f64a4
UTF8:     324563ee68cc8009c82778d70d958723
UTF8?:    1aaf934b705b1d2aab69b0cf2a9cd87b

La fonction de hachage en ligne MD4 ( https://emn178.github.io/online-tools/md4.html ) donnerait

1bee69a46ba811185c194762abaeae90

Mise à jour :

Merci pour commentaires, j'ai mis à jour le code:


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()}')

La nouvelle sortie est

UTF-16LE: 4e6a076ae1b04a815fa6332f69e2e231
UTF-16:   c6274a58a30e434503b45d2ce95e6c19
UTF8:     1bee69a46ba811185c194762abaeae90
UTF8?:    1bee69a46ba811185c194762abaeae90

J'ai aussi découvert que https://emn178.github.io/online-tools/md4.html utilisation UTF-16 , même si je l' ai passé un fichier avec l' encodage UTF-16LE.

WPA2 Enterprise requiert du texte à coder en UTF-16LE.

bechtold:

Avec la mise à jour mise à jour de toute évidence le hachage, ce qui signifie que vous nourrissez en plus des morceaux de votre message. Donc, vous nourrissez réellement dans la chaîne à plusieurs reprises avec différents encodages qui à la fin donne un hachage pour plus que votre chaîne.

Si vous ne mettez à jour une fois que vous aurez le résultat escompté.

from Crypto.Hash import MD4

psk = 'The quick brown fox jumps over the lazy dog'

h = MD4.new()

h.update(psk.encode('UTF-8'))
print(f'UTF8:     {h.hexdigest()}')

De la documentation du produit de digestion, à partir de laquelle le hexdigestprocédé est un dérivé:

Retour le résumé des chaînes transmises à la update()méthode jusqu'à présent. Ceci est une chaîne d' digest_sizeoctets qui peuvent contenir des caractères non-ASCII, y compris les octets nuls.

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=291932&siteId=1
conseillé
Classement