Hashing seguro de senhas no Golang/App Engine sem syscall ou scrypt
Embora bcrypt e scrypt sejam comumente usados para hash de senha, eles podem não ser adequado para App Engine devido à acessibilidade do syscall. Como alternativa, considere aproveitar a biblioteca go.crypto para hashing de senha seguro.
O pacote go.crypto oferece suporte para pbkdf2 e bcrypt. Ambas as implementações são escritas inteiramente em Go, garantindo compatibilidade com o App Engine.
1. Usando bcrypt
Implemente bcrypt usando as seguintes etapas:
go get golang.org/x/crypto/bcrypt
Exemplo de uso:
import "golang.org/x/crypto/bcrypt"
func clear(b []byte) {
for i := 0; i Isso produzirá uma saída semelhante a:
$2a$10$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e
2. Usando pbkdf2
Para um hash simples 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))
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3