Decode Hash sha256 Verschlüsselung, das Salz kennen

8

Ich mache ein Login-System für eine Webanwendung. Um Passwörter in der DB zu speichern, verschlüssle ich Passwörter mit sha256 wie folgt:

%Vor%

In der Datenbank speichere ich den Benutzer, das Passwort des Benutzers und das Salz, das verwendet wird, um Hash zu machen und das Login des Benutzers zu validieren. Im Moment mache ich die Funktionalität, um dem Benutzer eine E-Mail mit Ihrem Passwort zu senden, aber wenn der Benutzer die E-Mail empfängt, da in sha256 verschlüsselten Passwort gespeichert ist, erhält der Benutzer eine lange Zeichenfolge und nicht das Passwort, das der Benutzer angenommen wird wissen.

Meine Frage ist irgendwie, dass ich Ihnen das tatsächliche Benutzerpasswort und nicht die Kennwortverschlüsselung senden kann, dh, es gibt eine Möglichkeit, das Gegenteil von sha256 zu tun, wenn ich das Salz kenne. Falls nicht möglich, wird empfohlen, die Verschlüsselungsmethode zu verwenden, um die Rückseite des Verschlüsselungsschlüssels zu vervollständigen und das tatsächliche Kennwort in einer E-Mail an den Benutzer zu senden.

    
franvergara66 06.09.2013, 22:16
quelle

2 Antworten

7

Wie in den Kommentaren zu Ihrer Frage erwähnt, ist die Umkehrung des Hashwerts keine wirkliche Option.

Was Sie jedoch tun können, und das tun auch alle anderen. In Ihrem Registrierungscode (zB register.php), den Sie in Ihrem Formular veröffentlichen, kann das PHP-Skript das Passwort in einer E-Mail senden und dann verschlüsseln und in der Datenbank speichern.

Ich nehme an, Sie haben ein Registrierungsformular irgendeiner Art, und dieses Formular postet angeblich die neuen Benutzerdetails zu einem anderen (oder dem gleichen) PHP-Skript, nicht wahr?

Zum Beispiel, wenn mein Formular etwas wie <form method="post" action="register.php">

sagt

Und in register.php hätte ich dann sowas wie

%Vor%

Ein ungefährer Beispielcode. Ich hoffe es hilft!

    
Henrik Skogmo 06.09.2013, 22:40
quelle
1

Sie sollten niemals Klartext-Passwörter per E-Mail senden. Senden Sie stattdessen einen zeitlich befristeten Link "Passwort zurücksetzen" zur einmaligen Verwendung, wie in den Kommentaren empfohlen.

Sie sollten nicht einen einfachen Hash verwenden, wie von @ Henrik vorgeschlagen. Verwenden Sie ein standard-einstellbares Passwort KDF (PBKDF2, bcrypt, scrypt)

Wenn Sie PHP 5.5 verwenden können, verwenden Sie die standardmäßigen Hashing-Funktionen für Kennwörter . Es gibt Hosts, die PHP 5.5 unterstützen, aber Sie müssen nach ihnen suchen und danach fragen.

Es gibt viele Stellen im Internet, die erklären, wie man es richtig macht (zB Ссылка ) und viele andere erklären, wie man es falsch macht. Bitte nehmen Sie sich etwas Zeit, dies zu recherchieren, bevor Sie Ihr eigenes Authentifizierungssystem einrichten.

    
Terrel Shumway 26.09.2013 19:27
quelle