Heim >Backend-Entwicklung >Golang >Wie kann ich Passwörter in Golang/App Engine sicher hashen, ohne Syscall oder Scrypt?

Wie kann ich Passwörter in Golang/App Engine sicher hashen, ohne Syscall oder Scrypt?

Linda Hamilton
Linda HamiltonOriginal
2024-10-30 08:26:02659Durchsuche

How to Securely Hash Passwords in Golang/App Engine Without syscall or 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn