Go语言密码安全:bcrypt与加密存储
Go语言密码安全bcrypt与加密存储1. 密码安全概述密码存储是Web应用安全的关键应使用强哈希算法如bcrypt避免明文存储和弱哈希。2. bcrypt实现package auth import ( golang.org/x/crypto/bcrypt ) func HashPassword(password string) (string, error) { bytes, err : bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost) return string(bytes), err } func CheckPassword(password, hash string) bool { err : bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) return err nil } type PasswordManager struct { cost int } func NewPasswordManager() *PasswordManager { return PasswordManager{cost: bcrypt.DefaultCost} } func (m *PasswordManager) SetCost(cost int) { m.cost cost } func (m *PasswordManager) Hash(password string) (string, error) { return bcrypt.GenerateFromPassword([]byte(password), m.cost) } func (m *PasswordManager) Verify(password, hash string) bool { return bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) nil }3. 总结bcrypt是密码哈希的最佳实践通过自适应哈希和盐值机制可以有效防止彩虹表攻击。