Heim >Backend-Entwicklung >Golang >Wie kann ich Passwörter in Golang/App Engine sicher hashen, ohne Syscall oder Scrypt?
Sicheres Hashing von Passwörtern in Golang/App Engine ohne Syscall oder Scrypt
Obwohl Lebcrypt und Scrypt häufig für das Passwort-Hashing verwendet werden, ist dies möglicherweise nicht der Fall Aufgrund der Systemaufruf-Zugänglichkeit für App Engine geeignet. Erwägen Sie als Alternative die Nutzung der go.crypto-Bibliothek für sicheres Passwort-Hashing.
Das go.crypto-Paket bietet Unterstützung sowohl für pbkdf2 als auch für bcrypt. Beide Implementierungen sind vollständig in Go geschrieben und gewährleisten so die Kompatibilität mit App Engine.
1. Verwenden von bcrypt
Implementieren Sie bcrypt mit den folgenden Schritten:
<code class="bash">go get golang.org/x/crypto/bcrypt</code>
Beispielverwendung:
<code class="go">import "golang.org/x/crypto/bcrypt" func clear(b []byte) { for i := 0; i < len(b); i++ { b[i] = 0; } } func Crypt(password []byte) ([]byte, error) { defer clear(password) return bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost) } ctext, err := Crypt(pass) if err != nil { log.Fatal(err) } fmt.Println(string(ctext))</code>
Dies führt zu einer Ausgabe ähnlich der folgenden:
a$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e
2. Mit pbkdf2
Für einen einfachen Hash mit pbkdf2:
<code class="go">import "golang.org/x/crypto/pbkdf2" func HashPassword(password, salt []byte) []byte { defer clear(password) return pbkdf2.Key(password, salt, 4096, sha256.Size, sha256.New) } pass := []byte("foo") salt := []byte("bar") fmt.Printf("%x\n", HashPassword(pass, salt))</code>
Das obige ist der detaillierte Inhalt vonWie kann ich Passwörter in Golang/App Engine sicher hashen, ohne Syscall oder Scrypt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!