convertit une Chaîne en MD5
Ok je suis en train d'écrire une base de convertisseur d'une chaîne à md5
code de hachage, mais quand je lance mon programme, je reçois un message d'erreur qui disent:
Traceback (most recent call last):
File "C:\Users\Shane\Documents\Amer CISC\lab4.py", line 30, in <module>
assertEqual (computeMD5hash("The quick brown fox jumps over the lazy dog"),("9e107d9d372bb6826bd81d3542a419d6"))
File "C:\Users\Shane\Documents\Amer CISC\lab4.py", line 27, in computeMD5hash
m.update(string)
TypeError: Unicode-objects must be encoded before hashing
Mon code ressemble à ceci:
def computeMD5hash(string):
import hashlib
from hashlib import md5
m = hashlib.md5()
m.update((string))
md5string=m.digest()
return md5string
Vous devriez vraiment le tag de la question avec la langue que vous utilisez.
Ressemble Python à partir de la Traceback
aussi, il est bon d'éviter l'utilisation spéciale des mots " pour les applications spéciales. Par exemple, la 'chaîne' est le nom d'un module. Même si elle n'est pas une erreur, il est préférable d'éviter toute ambiguïté dans la mesure du possible
Ressemble Python à partir de la Traceback
aussi, il est bon d'éviter l'utilisation spéciale des mots " pour les applications spéciales. Par exemple, la 'chaîne' est le nom d'un module. Même si elle n'est pas une erreur, il est préférable d'éviter toute ambiguïté dans la mesure du possible
OriginalL'auteur spenman | 2012-11-06
Vous devez vous connecter pour publier un commentaire.
Que l'erreur indique, votre
string
doit être unicode et vous devez coder. En regardant l'appel que vous faites (à partir de votre stack trace):il semble que vous devez être en cours d'exécution Python 3, où les chaînes sont des objets unicode. Pour coder un octet de représentation qui peuvent ensuite être traitées par le hashlib, changer ce
(si l'utf-8 est un codage approprié pour vous - cela dépend de comment vous allez utiliser ceci):
Si c'est toutes les nouvelles pour vous, vous devriez lire l'excellent Python 3 Unicode HOWTO.
Aussi, alors je suis ici, votre code a d'autres questions
from hashlib import
ligne ou temporairemd5string
.import hashlib
devrait être déplacé à portée de module.digest()
qui est binaire brut, et à partir de votre trace de la pile on dirait que vous attendez de lahexdigest()
à la place qui est la même chose représentée comme une chaîne hexadécimale.À fixer et ranger tout ça, essayez ceci:
OriginalL'auteur Day
Plutôt que d'essayer de hachage de la chaîne, vous devez hachage codé séquence d'octets. Au lieu de
vous devez coder, par exemple:
En Python 2, vous pourriez vous en sortir sans le faire, et il a conduit à aucune fin de l'inaperçu de bugs. Heureusement Python 3 est beaucoup plus saine support de l'unicode, et de faire la distinction entre les octets et les chaînes de caractères.
OriginalL'auteur DSM
Semble que vous avez pour encoder la chaîne avant de hachage:
http://www.dreamincode.net/forums/topic/246026-generating-string-hash-issue/
OriginalL'auteur gabga
!/usr/bin/env python
coding=utf-8
import sys, os, stat
importation de pygtk, gtk
importation zbarpygtk
importation pycurl
de temps importer strftime, localtime
l'importation de pango
classe qrdat:
si nom == "principal":
OriginalL'auteur JOSUE ANTONIO PEREZ CORREA