Hashing de contraseñas de forma segura en Golang/App Engine sin syscall o scrypt
Si bien bcrypt y scrypt se usan comúnmente para el hash de contraseñas, es posible que no se Adecuado para App Engine debido a la accesibilidad de syscall. Como alternativa, considere aprovechar la biblioteca go.crypto para un hash seguro de contraseñas.
El paquete go.crypto ofrece soporte tanto para pbkdf2 como para bcrypt. Ambas implementaciones están escritas íntegramente en Go, lo que garantiza la compatibilidad con App Engine.
1. Usando bcrypt
Implemente bcrypt siguiendo los siguientes pasos:
go get golang.org/x/crypto/bcrypt
Ejemplo de uso:
import "golang.org/x/crypto/bcrypt"
func clear(b []byte) {
for i := 0; i Esto producirá una salida similar a:
$2a$10$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e
2. Usando pbkdf2
Para un hash simple usando pbkdf2:
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))
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3