web-dev-qa-db-fra.com

Comment corriger l'erreur de codage Unicode en utilisant le module hashlib?

Après plusieurs recherches, je n'ai pas pu déterminer comment éviter une erreur indiquant: "Les objets Unicode doivent être codés avant le hachage" lors de l'utilisation de ce code:

    pwdinput = input("Now enter a password:")
    pwd = hashlib.sha1()
    pwd.update(pwdinput)
    pwd = pwd.hexdigest()

Comment puis-je surmonter cette erreur? Comment encodez-vous les objets Unicode?

28
Nate
pwdinput = input("Now enter a password:").encode('utf-8') # or whatever encoding you wish to use

En supposant que vous utilisez Python 3, cela convertira la chaîne Unicode renvoyée par input() en un objet bytes encodé en UTF-8, ou tout autre encodage vous souhaitez utiliser. Les versions précédentes de Python l'ont également, mais leur gestion des chaînes Unicode vs non-Unicode était un peu compliquée, alors que Python = 3 a une distinction explicite entre les chaînes Unicode (str) et les séquences immuables d'octets qui peuvent représenter ou non ASCII caractères (bytes).

http://docs.python.org/library/stdtypes.html#str.encode
http://docs.python.org/py3k/library/stdtypes.html#str.encode

49
JAB