Heim >Backend-Entwicklung >Golang >Wie kann ich die Kompatibilität zwischen Bcrypt von Node.js und Bcrypt von Golang für das Passwort-Hashing sicherstellen?
Hashing von Passwörtern in Golang, kompatibel mit Bcrypt von Node.js
In Node.js wird häufig ein Bcrypt-Paket zum Hashen von Benutzerpasswörtern verwendet. Bei der Migration zu Golang ist es wichtig, die Kompatibilität mit den vorhandenen gehashten Passwörtern, die in der Datenbank gespeichert sind, aufrechtzuerhalten.
Node.js Bcrypt-Hashing-Code
Der bereitgestellte Node.js-Code nutzt das bcrypt-Modul, um eine Hash-Zeichenfolge zu generieren. Es nutzt zwei aufeinanderfolgende Funktionen: genSalt zum Erstellen eines Salts und Hash zum Generieren des Hashs mithilfe des Passworts und des Salts.
Golang Bcrypt Hashing-Äquivalent
Die entsprechende Golang-Implementierung mit Das Paket golang.org/x/crypto/bcrypt würde wie folgt aussehen:
hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost);
Funktioniert Beispiel
Um die Kompatibilität zu demonstrieren, veranschaulicht das folgende Codebeispiel das Hashing eines Passworts in Golang und dessen Überprüfung anhand des von Node.js generierten Hashs:
package main import ( "fmt" "golang.org/x/crypto/bcrypt" ) func main() { // Generate a hash from a password. password := []byte("SecretPassword") hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost) if err != nil { panic(err) } fmt.Println("Generated Hash:", string(hashedPassword)) // Simulate Node.js-generated hash. nodejsHash := []byte("a$n8J51m8dYIm/3CmaFCizgO93Gkj/3RZIiI4S2G8NkyL2fKvsBpfHy") // Compare with the Golang-generated hash. err = bcrypt.CompareHashAndPassword(nodejsHash, password) if err != nil { fmt.Println("Passwords do not match.") } else { fmt.Println("Passwords match.") } }
Verwendung
Um diesen Code zu verwenden, stellen Sie zunächst sicher, dass Sie das erforderliche Golang-Paket installiert und importiert haben, wie im Beispiel gezeigt. Übergeben Sie dann einfach Ihr Passwort an GenerateFromPassword, um eine Hash-Zeichenfolge zu generieren. Verwenden Sie zur Passwortvalidierung CompareHashAndPassword, um das gehashte Passwort aus der Datenbank mit dem bereitgestellten Passwort zu vergleichen. Wenn der zurückgegebene Fehler Null ist, stimmen die Passwörter überein und entsprechen sowohl den Node.js- als auch den Golang-Standards.
Das obige ist der detaillierte Inhalt vonWie kann ich die Kompatibilität zwischen Bcrypt von Node.js und Bcrypt von Golang für das Passwort-Hashing sicherstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!