Frage

Ich habe mich durch ths hashlib Dokumentation aber habe nichts reden über die Verwendung von Salz gefunden , wenn Hashing Daten.

Hilfe wäre toll.

War es hilfreich?

Lösung

Samir Antwort ist richtig, aber etwas kryptisch. Im Grunde genommen ist das Salz nur ein zufällig abgeleitet Bit an Daten, dass Sie das Präfix oder postfix Ihre Daten mit drastisch die Komplexität eines Wörterbuchangriff auf Hash-Wert zu erhöhen. So ein Salz s gegeben und Daten d würden Sie nur das tun, nach einem gesalzenen Hash der Daten zu erzeugen:

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

Sehen Sie diese wikipedia Artikel für weitere Details

Andere Tipps

Fügen Sie einfach das Salz auf Ihre sensiblen Daten:

>>> 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'

Salting ist kein magischer Prozess, dass die Bibliothek benötigt, Ihnen zu helfen mit-es nur zusätzliche Daten ist zu stoppen Rainbow-Tabellen zur Verfügung gestellt von der Arbeit.

>>> 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'

Wenn Sie nach einem Ersatz für Krypta suchen (), neuere Versionen von glibc bereits SHA-512-basiertem "$ 6 $" mit einer variablen Iterationszahlcode (siehe Ulrich Drepper Seite , die eine Beschreibung und Links zu einer vollständigen C-Implementierung von sha512_crypt_r() hat).

Ihre eigenen Krypto-Schreiben ist stark abzuraten -. Die oben sha512(salt+password) nicht hilft gegen einen Brute-Force-Angriff

Zur Erzeugung von Salz, die Verwendung so etwas wie os.urandom(16) für zufälliges Bytes oder ''.join(map(lambda x:'./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'[ord(x)%64], os.urandom(16))) für zufällige base64-alike Zeichen (für die Verwendung mit crypt () - Doppelgänger).

(ich sage base64-alike es ist nicht das gleiche wie die Base64 in PEM / MIME).

Verwendung passlib, Ihr eigenes Passwort Krypto-Schreiben ist ein fast sicherer Weg zum Scheitern.

SHA512 ist nicht eine gute Möglichkeit, in diesen Tagen Hash-Passwörter zu speichern. Sie sollten mit bcrypt oder etwas ähnliches sein. Wichtig ist, dass Versalzung in und dass der Algorithmus gebaut ist, hat einen bedeutenden Faktor Arbeit.

Wenn Sie Salz Ihrer SHA512 Passwörter durch einfaches Anhängen (oder vorangestellt wird), um das Salz zu dem unverschlüsselten Text, alle, die ihre Hände auf einer Reihe von Ihren Hash-Passwörtern bekommen und legen ein modernes Cracking-Tool ( http://arstechnica.com/security/2013/05/how -crackers-Make-Hackfleisch-out-of-your-Passwörter / ) wird in der Lage sein, + die verketteten Passwort Salz Werte zu sehen und wird wahrscheinlich durch triviales pattern-Matching, in der Lage sein, den Passwort-Teil trennen von der Salzanteil für die meisten, wenn nicht alle Konten in Frage.

Ich habe nicht daran gedacht, das durch den ganzen Weg, und ich bin keineswegs ein Sicherheitsexperte, aber es scheint mir, dass, wenn Sie zu verschlüsseln waren (unter Verwendung von zum Beispiel AES256), um das Passwort, das Salz als die Verwendung von Schlüssel und dann Hash , die mit SHA512, Sie von der Verwundbarkeit sicher würde ich oben beschrieben.

Doch an diesem Punkt haben Sie in mehr Mühe, als es Schalter genommen hätte bcrypt und Sie würden immer noch nicht den Schutz eines Arbeitsfaktor haben, so würde ich nur einen Ansatz empfehlen wie, dass, wenn die Umwelt Sie arbeiten in nicht diese Option anbieten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top