Question

Je suis à la recherche par le biais ths documentation hashlib mais ai rien trouvé à parler en utilisant sel lorsque hash données.

Aide serait grande.

Était-ce utile?

La solution

La réponse de Samir est correcte mais un peu cryptique. En gros, le sel est juste un peu au hasard provenant de données que vous préfixe ou Postfix vos données avec d'augmenter considérablement la complexité d'une attaque par dictionnaire sur votre valeur hachée. Donc, étant donné un s de sel et les données d vous souhaitez simplement effectuer les opérations suivantes pour générer un hachage salé des données:

import hashlib
hashlib.sha512( s + d ).hexdigest()

Voir cette wikipedia article pour plus de détails

Autres conseils

Il suffit d'ajouter le sel à vos données sensibles:

>>> import hashlib
>>> m = hashlib.sha512()
>>> m.update('salt')
>>> m.update('sensitive data')
>>> m.hexdigest()
'70197a4d3a5cd29b62d4239007b1c5c3c0009d42d190308fd855fc459b107f40a03bd427cb6d87de18911f21ae9fdfc24dadb0163741559719669c7668d7d587'
>>> n = hashlib.sha512()
>>> n.update('%ssensitive data' % 'salt')
>>> n.hexdigest()
'70197a4d3a5cd29b62d4239007b1c5c3c0009d42d190308fd855fc459b107f40a03bd427cb6d87de18911f21ae9fdfc24dadb0163741559719669c7668d7d587'
>>> hashlib.sha512('salt' + 'sensitive data').hexdigest()
'70197a4d3a5cd29b62d4239007b1c5c3c0009d42d190308fd855fc459b107f40a03bd427cb6d87de18911f21ae9fdfc24dadb0163741559719669c7668d7d587'

Salage est pas un processus magique que les besoins bibliothèque pour vous aider avec-ce est juste des données supplémentaires fournies aux tables arc-en-stop de travail.

>>> import hashlib
>>> m = hashlib.sha512()
>>> m.update(b"Nobody inspects")
>>> m.update(b" the spammish repetition")
>>> m.digest()
b'\xd0\xf4\xc1LH\xadH7\x90^\xa7R\x0c\xc4\xafp\x0fd3\xce\t\x85\xe6\xbb\x87\xb6\xb4a|\xb9D\xab\xf8\x14\xbdS\x96M\xdb\xf5[A\xe5\x81+:\xfe\x90\x89\x0c\nM\xb7\\\xb0Cg\xe19\xfdb\xea\xb2\xe1'
>>> m.update(b"My super-secret salt.")
>>> m.digest()
b'\xcd\xd7K\xd9!~\xa8\x1d6\x9b\xa6\xde\x06\t\x02\xa1+}\xaeNA\x94a`\xaa\xf4\xe9\xb5\xff\x1f\x9cE\x84m\xbb\x98U\xb4z\x92\x9e\xe8\xc9\xc2\xc8\x8f\x068e\xb0\r\xed\xb7\xde\x80\xa6,\n\x111w{\xa2\x9b'

Si vous êtes à la recherche d'un remplaçant pour crypt (), les nouvelles versions de glibc, SHA-512 basé "6 $" avec une itération variable count (voir page de Ulrich Drepper , qui a une description et des liens vers une mise en œuvre complète C de sha512_crypt_r()).

La rédaction de votre propre Crypto est très déconseillés -. Le sha512(salt+password) ci-dessus ne aide contre une attaque de force brute

Pour générer le sel, utiliser quelque chose comme os.urandom(16) pour les octets aléatoires ou ''.join(map(lambda x:'./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'[ord(x)%64], os.urandom(16))) pour les caractères base64-alike aléatoires (pour une utilisation avec crypt () - alikes).

(je dis base64 aussi bien ce n'est pas la même chose que dans le base64 PEM / MIME).

utilisation passlib, écrivant votre propre mot de passe Crypto est un moyen presque sûr à l'échec.

SHA512 est pas un excellent moyen de stocker les mots de passe hachés ces jours-ci. Vous devez utiliser bcrypt ou quelque chose de similaire. Ce qui est important est que le salage est construit et que l'algorithme a un facteur de travail important.

Si vous salez vos mots de passe SHA512 en ajoutant simplement (ou préfixer) le sel du texte brut, tous ceux qui se la main sur un ensemble de vos mots de passe hachés et applique un outil de craquage moderne ( http://arstechnica.com/security/2013/05/how -crackers-make-émincé-viande hors-votre-mots de passe / ) sera en mesure de voir le mot de passe concaténés + valeurs de sel et probablement, par correspondance de motif trivial, être en mesure de séparer la partie de mot de passe la partie de sel pour la plupart, sinon tous les comptes en question.

Je n'ai pas réfléchi à tout le chemin, et je ne suis pas un expert de la sécurité, mais il me semble que si vous deviez Crypter (en utilisant, par exemple, AES256) le mot de passe en utilisant le sel comme clé, puis hachage que avec SHA512, vous seriez à l'abri de la vulnérabilité que je décrit ci-dessus.

Cependant, à ce moment-là que vous avez mis plus d'efforts qu'il aurait fallu pour passer à Bcrypt et vous n'auriez pas encore la protection d'un facteur de travail, donc je ne recommande une approche comme si l'environnement vous travaillez ne propose pas cette option.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top