每日一库:Go 中的 bcrypt 加密库
golang/x/crypto/bcrypt
是 Go 中用于密码加密的工具,安全高效,适合用户认证。
安装
代码语言:bash复制go get golang/x/crypto/bcrypt
核心函数
1. GenerateHashPassword
作用:将明文密码生成加密哈希。
代码:
代码语言:go复制func GenerateHashPassword(password string) (string, error) {
hashPassword, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
if err != nil {
return "", err
}
return string(hashPassword), nil
}
说明:使用默认工作因子(10)生成带盐的哈希,若出错返回空字符串和错误。
2. CompareHashAndPassword
作用:验证密码与哈希是否匹配。
代码:
代码语言:go复制func CompareHashAndPassword(hashPassword string, password string) bool {
err := bcrypt.CompareHashAndPassword([]byte(hashPassword), []byte(password))
return err == nil
}
说明:返回 true
表示匹配,false
表示不匹配。
示例
代码语言:go复制func main() {
password := "123456"
hashPassword, err := GenerateHashPassword(password)
if err != nil {
panic("生成加密密码失败")
}
fmt.Printf("生成的加密密码为:%s\n", hashPassword)
if CompareHashAndPassword(hashPassword, password) {
fmt.Println("匹配")
} else {
fmt.Println("不匹配")
}
}
优点
- 抗暴力破解,内置盐值。
使用场景
- 用户注册、登录。
注意事项
- 计算成本高,密码上限 72 字节。
总结
bcrypt
简单安全,是 Go 中密码加密的优选。