Mit mcrypt_create_iv zu schaffen Salz?
Ich bin derzeit in den Prozess des Lernens, wie hashing + Salzen arbeitet, ich bin derzeit mit diesem code auf PHP zu generieren 'Salz'
function calculateSalt(){
$iv = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
return $iv;
}
In der Theorie sollte diese Rückkehr ein gutes Salz für das hashing meine Passwörter mit. Wenn ich wendete Sie auf meine kleine Datenbank mit test-Passwörter, die Es scheinen möchten, sah es ziemlich sicher und einzigartig, obwohl dies ist eine sehr geringe Menge von test-Passwörter ich Frage mich, Ob das ein akzeptabler Weg, um erzeugen eine gute, einzigartige Salz-oder wenn mcrypt_create_iv
war eine schlechte Praxis. Was ich sagen kann, es ist Hauptzweck ist nicht gesalzen, aber wäre Es schlecht, Wenn ich es für diesen Zweck verwendet?
Hinweis: diese Datenbank ist nicht öffentlich Passwörter, nur Testfälle. Hier ist die Salz - + - hashes mit Hilfe der oben genannten Technik.
openssl_random_pseudo_bytes(16);
.. aber für Kennwörter, die Sie verwenden können password_hash()
statt.Art. Prüfen Sie das ircmaxell Kompatibilitäts-Bibliothek. Es nutzt
mcrypt_create_iv()
als Standard-salter, wenn kein Salz übergeben wurde.Im Kern geht es entweder nutzt
php_win32_get_random_bytes()
oder liest direkt aus /dev/urandom
.InformationsquelleAutor Leth0_ | 2014-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Obwohl
mcrypt_create_iv()
ist technisch soll die Initialisierung von Vektoren für die symmetrische Verschlüsselung, es kann verwendet werden, um eine ausreichende Salze genauso gut.Jedoch für Passwörter, sollten Sie mit einem Kennwort-hashing-Funktion statt:
Es nutzt
crypt()
intern und, je nach Plattform, entweder Lesen von/dev/urandom
direkt oder verwenden Siephp_win32_get_random_bytes()
zu generieren, ein Salz, wenn keines angegeben.Einen Vorteil in Bezug auf die Lagerung ist, dass sowohl die hash-und salt gespeichert werden, in einer einzigen undurchsichtigen string.
Siehe auch:
password_hash()
hashing bezieht sich lediglich auf das Verhalten der Produktion irreversibel Ergebnis aus einem gegebenen input; die Schwierigkeit bei der überprüfung ist unterschiedlich für jede Hash-Algorithmus, der für bcrypt ist besonders schwer.
Id mit diesem einverstanden, wenn wir reden über bcrypt, aber wir können nie davon ausgehen, dass jeder bcrypt verwenden. So ist es immer schön, um bewährte Praktiken zu fördern und umfassend zu informieren, sollten Sie immer Salzen und key stretching. Vor allem, da im Gegensatz zu CPU 's, GPU' s sind immer stärker mit einer exponentiellen rate.
Ich war nicht davon bcrypt verwendet wurde, die, ich sage, dass es verwendet werden soll: -)
amen Bruder! bcrypt ist eine schöne Sache, soweit der Kryptographie geht.
InformationsquelleAutor Ja͢ck
Werde ich Ihnen eine Kopie meines RandomBytes Funktion. Es verwendet die random source system zur Verfügung stehen.
$count ist, wie viele bytes Sie wollen.
$base64 ist true, um die Ausgabe base64, false Ausgabe ein Binär-string.
$sessionIdSafe wahr ist, ändern Sie die base64-in einer Weise, dass es noch gültig ist für die Verwendung als eine sessionid in PHP. Es ändert die base64-Zeichen aus A-Za-z0-9+/A-Za-z0-9,- , und entfernt alle '=' padding-Zeichen vom Ende der Zeichenfolge.
ha ha. Ich nehme an, dass die base64-und sessionid Modifikatoren nicht brauchen, dort zu sein, sondern Sie nur fügen Sie 7 Zeilen von code am Ende.
InformationsquelleAutor Noishe
Ich würde Kommentar auf @Jack ' s Antwort, wenn ich hatte genug rep, aber ich nicht so... seine darauf folgende Antwort kann man sich Passwort Compat für die Erzeugung von Passwort, die über die password_* Funktionen gearbeitet für PHP 5.5.
InformationsquelleAutor Niao
Wenn Sie die Umsetzung Ihrer eigenen Benutzer-login-system ist es sehr wichtig zu Folgen, gut etablierte Richtlinien und nicht um zu versuchen, um das Rad neu erfinden über die Krypto. Hier ist ein sehr guter Artikel wie Passwort Hashen und Salzen.
Es kommt auch mit der folgenden PHP-Beispiel:
(Ich werde es kopieren, hier im Fall der original source nach unten geht.)
Wie oft haben Sie authentifizieren Ihre Benutzer, die mit Leistung betrifft? Auch kann man nicht erwarten, dass jeder PHP v. 5.5.0.
Dies ist nicht eine Frage der Leistung, dies ist eine Frage der Sicherheit. Normalerweise entscheiden Sie, wie lange eine Authentifizierung verbrauchen darf, das hängt von deinem server und von der Anzahl der Benutzer. Mit einem schnelleren Algorithmus können Sie mehr Runden in dieser Zeit, und mehr sichere hashes. Auch gibt es eine compatibility pack für frühere PHP-Versionen.
InformationsquelleAutor ahmd0