在 Golang/App Engine 中安全地散列密码,无需系统调用或 scrypt
虽然 bcrypt 和 scrypt 通常用于密码散列,但它们可能不由于系统调用可访问性,适合 App Engine。作为替代方案,请考虑利用 go.crypto 库进行安全密码散列。
go.crypto 包提供对 pbkdf2 和 bcrypt 的支持。两种实现均完全用 Go 编写,确保与 App Engine 兼容。
1。使用bcrypt
使用以下步骤实现bcrypt:
go get golang.org/x/crypto/bcrypt
用法示例:
import "golang.org/x/crypto/bcrypt"
func clear(b []byte) {
for i := 0; i 这将产生类似于以下内容的输出:
$2a$10$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e
2.使用 pbkdf2
对于使用 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))
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3