在 Golang 中使用 Bcrypt 哈希密码(Node.js 兼容性)
从 Node.js 和 Passport 迁移到 Golang 进行用户身份验证可以呈现挑战,特别是在处理存储在数据库中的加密密码时。本指南探讨如何在 Golang 中创建与 Node.js 兼容的 bcrypt 哈希字符串。
Node.js 加密代码
var bcrypt = require('bcrypt'); bcrypt.genSalt(10, function(err, salt) { if(err) return next(err); bcrypt.hash(user.password, salt, function(err, hash) { if(err) return next(err); user.password = hash; next(); }); });
Golang 等效项
要在 Golang 中获得相同的哈希结果,请使用golang.org/x/crypto/bcrypt package.
hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
工作示例
package main import ( "golang.org/x/crypto/bcrypt" "fmt" ) func main() { password := []byte("MyDarkSecret") // Hashing the password with the default cost of 10 hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost) if err != nil { panic(err) } fmt.Println(string(hashedPassword)) // Comparing the password with the hash err = bcrypt.CompareHashAndPassword(hashedPassword, password) fmt.Println(err) // nil means it is a match }
此示例演示了在 Golang 中使用 bcrypt 生成哈希值密码与 Node.js 中创建的密码等效,允许在过渡到 Golang 期间无缝迁移加密密码。
以上是如何在 Golang 中使用 Bcrypt 哈希密码以实现 Node.js 兼容性?的详细内容。更多信息请关注PHP中文网其他相关文章!