2010-03-12 5 views
1

Bonjour communauté StackOverflow de hashlib.digest(),Python problème avec la méthode de décodage

Utilisation de Google App Engine, j'ai écrit une méthode keyToSha256() dans une classe de modèle (extension db.Model):

class Car(db.Model): 
    def keyToSha256(self): 
     keyhash = hashlib.sha256(str(self.key())).digest() 
     return keyhash 

Lors de l'affichage de la sortie (en fin de compte dans un modèle Django), je reçois le texte brouillées, par exemple:

_ɘ `I; QeqNAl'2!

Je me attendais quelque chose de plus conforme à celle-ci:

9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

Est-ce que je manque quelque chose d'important? Malgré la lecture de plusieurs guides sur ASCII, Unicode, utf-8 et autres, je pense que je suis encore loin de maîtriser les secrets de l'encodage/décodage des chaînes. Après avoir parcouru StackOverflow et recherché des idées via Google, j'ai compris que je devrais poser la question ici. Une idée ? Merci !

Répondre

5

Utilisez plutôt .hexdigest().

+0

Merveilleux, merci Ignacio! Je viens de lire http://docs.python.org/library/hashlib.html#hashlib.hash.hexdigest: Je ne comprends pas pourquoi .digest() ne fera pas l'affaire, cependant. Les cordes sont si mystérieuses pour moi. – jbmusso

+0

'.digest()' vous donne une chaîne, mais ce sont les octets bruts. –

+0

Super, je comprends parfaitement! Python doc était trompeur pour un programmeur inexpérimenté comme moi, mais le lire une fois de plus avec votre réponse à l'esprit, il est beaucoup plus facile à comprendre. J'ai maintenant la signification de "environnements non-binaires", dont je suis sûr que cela sera utile à l'avenir. – jbmusso