gpt4 book ai didi

google-app-engine - Golang/App Engine - 安全地散列用户密码

转载 作者:IT老高 更新时间:2023-10-28 13:09:08 26 4
gpt4 key购买 nike

我通常使用 bcrypt 库进行密码散列,但由于该库使用 syscall,我无法这样做。我也试过scrypt。还有哪些其他方法是安全的,哪一种是最好的方法?

最佳答案

看看go.crypto .它提供对 pbkdf2 和 bcrypt 的支持。这两种实现都是纯粹用 Go 编写的,应该可以在 GAE 上正常运行。

最简单的可能是bcrypt。运行包:

go get golang.org/x/crypto/bcrypt

示例用法:

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))

输出将是这样的:

$2a$10$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e

如果您只需要哈希,请使用 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))

关于google-app-engine - Golang/App Engine - 安全地散列用户密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18545676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com