"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo codificar contraseñas de forma segura en Golang/App Engine sin syscall o scrypt?

¿Cómo codificar contraseñas de forma segura en Golang/App Engine sin syscall o scrypt?

Publicado el 2024-11-08
Navegar:130

How to Securely Hash Passwords in Golang/App Engine Without syscall or scrypt?

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))
Último tutorial Más>

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