Hachage sécurisé des mots de passe dans Golang/App Engine sans appel système ni scrypt
Bien que bcrypt et scrypt soient couramment utilisés pour le hachage de mots de passe, ils peuvent ne pas l'être adapté à App Engine en raison de l'accessibilité des appels système. Comme alternative, envisagez d'utiliser la bibliothèque go.crypto pour un hachage sécurisé des mots de passe.
Le package go.crypto offre la prise en charge de pbkdf2 et de bcrypt. Les deux implémentations sont entièrement écrites en Go, garantissant la compatibilité avec App Engine.
1. Utilisation de bcrypt
Implémentez bcrypt en suivant les étapes suivantes :
<code class="bash">go get golang.org/x/crypto/bcrypt</code>
Exemple d'utilisation :
<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>
Cela produira un résultat similaire à :
a$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e
2. Utilisation de pbkdf2
Pour un hachage simple utilisant 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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!