Comparer le résultat de hexdigest() pour une chaîne de caractères
J'ai un générés MD5 hash, qui je tiens à le comparer à un autre MD5 hash d'une chaîne. La déclaration ci-dessous est faux, même si elles ont le même lorsque vous les imprimez et doit être vrai.
hashlib.md5("foo").hexdigest() == "acbd18db4cc2f85cedef654fccc4a4d8"
Google me dit que je doit coder le résultat de hexdigest()
, car il ne veut pas retourner une chaîne de caractères. Toutefois, le code ci-dessous ne semble pas fonctionner non plus.
hashlib.md5("foo").hexdigest().encode("utf-8") == "foo".encode("utf-8")
OriginalL'auteur nip3o | 2010-08-27
Vous devez vous connecter pour publier un commentaire.
Python 2.7, .hexdigest() retourne un str
Python 3.1
.md5() ne prend pas en unicode ("foo"), de sorte que doit être codée dans un flux d'octets.
OriginalL'auteur pycruft
À l'aide de == pour un hachage comparaison est probablement une faille de sécurité.
https://groups.google.com/forum/?fromgroups=#!topic/keyczar-discuter/VXHsoJSLKhM
Il est possible pour un attaquant de chercher des différences de calendrier et de parcourir l'espace de manière efficace et de trouver une valeur qui va passer le test d'égalité.
OriginalL'auteur jwilkins
hexdigest
renvoie une chaîne de caractères. Votre première instruction renvoieTrue
en python-2.x.En python-3.x vous devez encoder argument
md5
fonction, dans ce cas, l'égalité est égalementTrue
. Sans codage il soulèveTypeError
.OriginalL'auteur SilentGhost