Files
cloudnest/internal/pkg/crypto/crypto.go
T

53 lines
1.5 KiB
Go

package crypto
import "golang.org/x/crypto/bcrypt"
// HashPassword hashes a plain text password using bcrypt.
// HashPassword 使用 bcrypt 对明文密码进行加密。
//
// Parameters:
// - password: The plain text password to hash.
//
// Returns:
// - string: The hashed password.
// - error: An error if hashing fails.
//
// Note:
// - Uses bcrypt.DefaultCost (10) for hashing.
// - The resulting hash is approximately 60 characters long.
//
// 参数:
// - password: 要加密的明文密码。
//
// 返回值:
// - string: 加密后的密码。
// - error: 如果加密失败则返回错误。
//
// 注意:
// - 使用 bcrypt.DefaultCost (10) 进行加密。
// - 生成的哈希值大约为 60 个字符。
func HashPassword(password string) (string, error) {
bytes, err := bcrypt.GenerateFromPassword([]byte(password), bcrypt.DefaultCost)
return string(bytes), err
}
// CheckPasswordHash compares a plain text password with a hashed password.
// CheckPasswordHash 比较明文密码和加密密码。
//
// Parameters:
// - password: The plain text password to check.
// - hash: The hashed password to compare against.
//
// Returns:
// - bool: true if the password matches the hash, false otherwise.
//
// 参数:
// - password: 要检查的明文密码。
// - hash: 要比较的加密密码。
//
// 返回值:
// - bool: 如果密码匹配哈希值则返回 true,否则返回 false。
func CheckPasswordHash(password, hash string) bool {
err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
return err == nil
}