Heim >Backend-Entwicklung >PHP-Tutorial >Wie sollten Passwörter sicher gespeichert werden?
1: Grundwissen: Hashing mit Salt
Wir wissen bereits, dass böswillige Angreifer Lookup-Tabellen und Rainbow-Tabellen verwenden, um gewöhnliche Hashes zu knacken. Wie schnell die Verschlüsselung ist. Wir haben auch
gelernt, dass die Verwendung von zufällig gesalzenen Hashes dieses Problem lösen kann. Aber welche Art von Salz verwenden wir und wie mischen wir es in ein Passwort?
Der Salt-Wert sollte mithilfe eines kryptografisch sicheren Pseudozufallszahlengenerators, CSPRNG, generiert werden. CSPRNG unterscheidet sich stark von gewöhnlichen Pseudozufallszahlengeneratoren,
wie der rand()-Funktion der Sprache „C“. Wie der Name schon sagt, ist CSPRNG kryptografisch sicher konzipiert, was bedeutet, dass es hochgradig zufällige, völlig unvorhersehbare Zufallszahlen liefern kann. Wir möchten nicht, dass der Salzwert vorhersehbar ist, daher muss CSPRNG verwendet werden.
In der folgenden Tabelle sind die CSPRNG-Methoden einiger aktueller Mainstream-Programmierplattformen aufgeführt.
Plattform | CSPRNG |
---|---|
PHP | mcrypt_create_iv , openssl_random_pseudo_bytes |
Java | java.security.SecureRandom |
Dot NET (C#, VB) | System.Security.Cryptography.RNGCryptoServiceProvider |
Ruby | SecureRandom |
Python | Betriebssysteme .urandom |
Perl | Math::Random::Secure | C/C++ (Windows API) | CryptGenRandom |
Beliebig Sprache unter GNU/Linux oder Unix | Lesen aus /dev/random oder /dev/urandom |
Platform | CSPRNG |
---|---|
PHP | mcrypt_create_iv, openssl_random_pseudo_bytes |
Java | java.security.SecureRandom |
Dot NET (C#, VB) | System.Security.Cryptography.RNGCryptoServiceProvider |
Ruby | SecureRandom |
Python | os.urandom |
Perl | Math::Random::Secure |
C/C++ (Windows API) | CryptGenRandom |
Any language on GNU/Linux or Unix | Read from /dev/random or /dev/urandom |
Verwenden Sie CSPRNG, um lange genug einen zufälligen Salt-Wert zu generieren.
Rufen Sie den Salt-Wert des Benutzers aus der Datenbank ab und den entsprechenden Hashwert.
Das obige ist der detaillierte Inhalt vonWie sollten Passwörter sicher gespeichert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!