安装
bash
代码解读
复制代码
go get golang.org/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 中密码加密的优选。