Sichern von Benutzerkennwörtern in Golang/App Engine
Die Gewährleistung der Sicherheit von Benutzerkennwörtern ist in jeder Anwendung von größter Bedeutung, und das bietet Golang/App Engine mehrere Möglichkeiten, dies zu erreichen. Obwohl die bcrypt-Bibliothek aufgrund ihrer Abhängigkeit vom Systemaufruf möglicherweise nicht geeignet ist, gibt es mehrere alternative Ansätze, die in Betracht gezogen werden sollten.
PBKDF2
Eine empfohlene Option ist der PBKDF2-Algorithmus. verfügbar im Paket crypto/pbkdf2. Diese Funktion verwendet ein Passwort, einen Salt und mehrere Parameter als Eingabe und gibt einen abgeleiteten Schlüssel aus. Das Salt sollte ein eindeutiger, zufällig generierter Wert für jeden Benutzer sein.
Beispiel:
<code class="go">import "golang.org/x/crypto/pbkdf2" func hashPassword(password, salt []byte) []byte { defer zeroize(password) return pbkdf2.Key(password, salt, 4096, sha256.Size, sha256.New) }</code>
bcrypt
Eine weitere praktikable Option ist der bcrypt-Algorithmus, der für seine hohe Sicherheit und seinen Rechenaufwand bekannt ist. Go bietet eine reine Go-Implementierung von bcrypt über das Paket golang.org/x/crypto/bcrypt.
Beispiel:
<code class="go">import "golang.org/x/crypto/bcrypt" func hashPassword(password []byte) ([]byte, error) { defer zeroize(password) return bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost) }</code>
Vergleich
Sowohl PBKDF2 als auch bcrypt sind sichere Optionen für das Passwort-Hashing. Allerdings lässt sich PBKDF2 besser anpassen, sodass Sie die Anzahl der Iterationen und die verwendete Hash-Funktion festlegen können. bcrypt hingegen ist für seine Einfachheit und Geschwindigkeit bekannt.
Auswahl der besten Option
Die Wahl zwischen PBKDF2 und bcrypt hängt von den spezifischen Anforderungen ab. Wenn Anpassung wichtig ist, ist PBKDF2 eine geeignete Wahl. Wenn Geschwindigkeit und Einfachheit entscheidend sind, ist bcrypt die bevorzugte Option. Denken Sie daran, für jeden Benutzer einen Salt-Wert zu verwenden, um Rainbow-Table-Angriffe zu verhindern.
Das obige ist der detaillierte Inhalt vonPBKDF2 vs. bcrypt: Welches ist der beste Passwort-Hashing-Algorithmus für Golang/App Engine?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!