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

Linda Hamilton
Freigeben: 2024-10-30 08:26:02
Original
594 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Dies führt zu einer Ausgabe ähnlich der folgenden:

a$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!