2017-07-11 3 views
-1

J'utilise Python 3.5 et quand j'utilise hashlib.md5(), une valeur différente est renvoyée d'une base de données que lorsqu'une chaîne est hachée à l'extérieur.Lors de l'utilisation de hashlib en Python, une valeur différente est retournée à partir d'une base de données

Le code J'utilise:

self.m = hashlib.md5() 
self.m.update(self.password.encode('utf-8')) 
self.passCheck = self.m.digest() 

Ce processus, lors de l'utilisation 'user1pass' comme un mot de passe retours:

b' \xa0\xdbS\xbc\x18\x81\xa7\xf79\xcd\x95kt\x009' 

Cependant, quand je vais chercher à partir d'une base de données:

self.cur.execute("SELECT Username, Password FROM Users WHERE Username = ?;", username) 
    self.userFindings = self.cur.fetchall() 
    self.userDetails = [] 
    for each in self.userFindings: 
     self.userDetails.append(list(each)) 

    return self.userDetails 

self.userDétails dans ce cas ressemble à ceci:

[['user1', "b' \\xa0\\xdbS\\xbc\\x18\\x81\\xa7\\xf79\\xcd\\x95kt\\x009'"]] 

D'une certaine manière dans le processus, les barres obliques ont été doublées, ce qui signifie qu'elles ne peuvent pas être comparées correctement. Quelqu'un a une idée de ce qui a causé ça?

EDIT: Photo de sortie

Output of self.passCheck and self.userDetails

+0

Il semble que vous mettez 'repr 'de la chaîne de hachage dans la base de données, au lieu de la valeur elle-même. – 9000

+0

@Anthon: le problème réside dans des guillemets qui rendent les barres obliques littérales: '" b '\ xa0 \ xdbS \ xbc \ x18 \ x81 \ xa7 \ xf79 \ xcd \ x95kt \ x009' "'. (Il m'a fallu du temps pour comprendre ce qui ne va pas.) – 9000

+0

Vous avez inséré des barres obliques inverses ('\') pendant l'édition, pas des barres obliques ('/'). Cela ne devrait pas être nécessaire. Je suppose que l'OP a copié et collé ce qu'il y avait sur l'écran. – Anthon

Répondre

0

J'ai maintenant trouvé que si j'ouvre la liste alors les deux valeurs de hachage correspondance. Il semble être une erreur d'affichage