2016-08-08 50 views
1

Ich habe ein Problem mit Passwort Hashing.Hashing in Java -> Passwort von Hash & Salz erhalten

Ich möchte eine Hash-Funktion wie diese nur verwenden hier:

Hashing Java (OWASP)

Mit dieser Funktion ich Passwörter Hash kann, bevor ich sie in meiner Datenbank speichern.

ABER

In meiner Anwendung verwende ich das Passwort dann an verschiedene Server einzuloggen (wie ein Mail-Server), aber innerhalb des javacode muss ich das Passwort nicht gehasht, sondern als Klartext-Passwort.

Also frage ich mich, wie ich das Klartext-Passwort wieder extrahieren kann (Hash + Salt ist in der Datenbank gespeichert und Hash-Funktion/Iteration ist bekannt), um es auf meinen verschiedenen Servern einzuloggen.

Weiß jemand, wie man das macht? (Vorzugsweise in einer Weise, die ich kann das verknüpfte OWASP-Code verwendet, um meine Passwörter Hash)

EDIT: Es scheint wie Verschlüsselung wäre der Weg hier zu gehen, aber ist dies eine akzeptable Lösung (wie Verschlüsselung nicht das ist sicher)? Ich würde mit einer hohen Iterationszahl und Salz trotzdem gehen.

+1

Nein kann. Sobald ein Passwort verschlüsselt wurde, wird das ursprüngliche Passwort nicht mehr zurückgegeben. Das ist die ganze Idee des Hashing! Sie können überprüfen, ob eine gegebene Eingabe * * das Passwort ist, aber Sie können es nicht reproduzieren. * Wenn * Sie das eigentliche Passwort benötigen, müssen Sie es stattdessen verschlüsseln, aber Sie * wollen es wahrscheinlich auch nicht, weil es Ihnen alle Arten von Sicherheitsproblemen eröffnet. –

+1

Wenn Sie das Klartextkennwort extrahieren können, erfüllen Sie die OWASP-Anforderung definitionsgemäß nicht. Der eigentliche Sinn von Hashing ist es, das zu verhindern. – ruakh

+0

aber wie kann ich ein Passwort sicher in einer Datenbank speichern, obwohl ich es in einfachem Format in meinem Code brauche – Alkahna

Antwort

3

Der gesamte Zweck eines Hash ist irreversibel. Wenn Sie das Klartext-Passwort zurückbekommen könnten, würde es den Zweck des Hashes vereiteln und wäre auch eine Sicherheitslücke.

0

Der Sinn des Hashing eines Passworts besteht darin, dass, wenn jemand den Hash erhält, sie nicht in der Lage sind, ihn umzukehren. Dies ist der gesamte Zweck dieser Sicherheitsmaßnahme. Was Sie eigentlich tun möchten, ist, die Benutzereingabe zu nehmen, sie mit demselben Algorithmus zu hashen und diesen Hash mit dem zu vergleichen, was Sie in der Datenbank gespeichert haben. Here's a great link explaining the process in detail.