Warum kehrt BCrypt.net GenerateSalt (31) sofort zurück?

Stolperte ich über BCrypt.net nach der Lektüre Jeff Atwood Beitrag über die Speicherung von Passwörtern das führte mich zu Thomas Ptacek Empfehlung an verwenden Sie BCrypt zum speichern von Passwörtern. Das führte mich schließlich zu diese C# - Implementierung von BCrypt

In den Kommentaren zu dem letzten link oben jemand fragte: "Warum tun GenerateSalt(30) nehmen für immer, aber GenerateSalt(31) scheint keine Zeit nehmen?"

Lief ich BCrypt.HashPassword(Passwort, BCrypt.GenerateSalt(31)) und habe mein Ergebnis in 0 Millisekunden.

Ich habe seit BCrypt.HashPassword("Passwort", BCrypt.GenerateSalt(30)) für mehr als 5 Minuten jetzt und noch kein Ergebnis.

Merke ich, wir werden wahrscheinlich nicht brauchen, eine zufällig generierte, 30-Zeichen-salt, erstellen unsere Passwort-hashes (oder unumkehrbaren Verschlüsselung in BCrypt Fall) seit Jahren. BEARBEITEN ich gelesen haben sollten, den code ein wenig, logRounds hat nichts zu tun mit der Salz-Länge. Dank Aaronaught.

Also, warum GenerateSalt(31) einen Wert zurück fast sofort (wenn es sollte etwa doppelt so lang wie GenerateSalt(30)?

UPDATE

hier ist der fix:

private byte[] CryptRaw(byte[] password, byte[] salt, int logRounds) {
    //... snip ...
    uint rounds = 1U << logRounds;
    //... snip
}

InformationsquelleAutor der Frage user1 | 2010-02-08

Schreibe einen Kommentar