Wie erzeuge ich in Salted-Hash ein SALT in Java?
Ich habe auf der Suche um, und die nächste Antwort ist : So erzeugen Sie einen zufälligen alpha-numerischen string?
Ich wollen, Folgen Sie diesem workflow nach dieser CrackStation tutorial:
Ein Passwort zu Speichern,
- Generieren einer langen, zufälligen salt mit einem CSPRNG.
- Hänge den salt an das Passwort-und hash es mit einem standard-kryptografische hash-Funktionen wie SHA256.
- Sparen, das Salz und den hash in die Datenbank des Benutzers aufzeichnen.
Um ein Kennwort zu Überprüfen
- Des Benutzers abrufen salt und hash aus der Datenbank.
- Hänge den salt an das Passwort-und hash, es mit dem gleichen hash-Funktion.
- Vergleichen den hash des angegebenen Passworts mit dem hash aus der Datenbank. Wenn Sie übereinstimmen, das Kennwort ist korrekt. Ansonsten, das Passwort ist falsch.
Ich weiß nicht, wie erzeugen Sie ein SALZ. Ich fand heraus, wie das generieren eines hash mithilfe des MessageDigest. Ich habe versucht, mit SecureRandom aber nextByte Methode erzeugt unleserlichen code.
Edit: ich weiß nicht, die Antwort zu wählen, Sie sind mir zu kompliziert, ich habe beschlossen, zu verwenden jBCrypt; jBCript ist einfach zu bedienen, hat alle komplexe Dinge hinter den kulissen. also lasse ich den community-vote für die beste Antwort.
InformationsquelleAutor der Frage Louis Hong | 2013-08-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Inspiriert von dieser Beitrag und postich benutze diesen code zu generieren und zu überprüfen, gehashte, gesalzene Passwörter. Es verwendet nur den JDK-Klassen, keine externen Abhängigkeiten.
Prozess ist:
getNextSalt
hash
Methode zur Generierung einer gesalzene und gehashte Kennwort. Die Methode gibt einebyte[]
die Sie speichern in einer Datenbank mit dem SalzisExpectedPassword
Methode, um zu prüfen, ob die Angaben übereinstimmenInformationsquelleAutor der Antwort assylias
Du hattest Recht in Bezug auf, wie Sie wollen, zu generieren, Salz, d.h. es ist nichts aber eine zufällige Nummer. Für diesen speziellen Fall, es würde schützen Sie Ihr system vor möglichen Dictionary-Angriffe. Nun, für das zweite problem, was Sie tun könnten, ist anstelle der Verwendung von UTF-8-Codierung, die Sie verwenden möchten, können Base64. Hier ist ein Beispiel für die Erzeugung eines hash. Ich bin mit Apache Gängigen Codecs für die base64-Kodierung können Sie wählen Sie eine Ihrer eigenen
Hier ist einige zusätzliche Verweis auf die gängige Praxis in der Passwort-hashing-direkt aus OWASP
InformationsquelleAutor der Antwort Raunak Agarwal
Andere version mit SHA-3, ich bin mit bouncycastle:
Schnittstelle:
Umsetzung:
Den test Fällen:
pom.xml (nur Abhängigkeiten):
InformationsquelleAutor der Antwort Marco Tulio Avila Cerón