package password import ( "fmt" "golang.org/x/crypto/bcrypt" ) const ( // DefaultCost - стандартная стоимость хеширования bcrypt DefaultCost = bcrypt.DefaultCost ) // Hash хеширует пароль с использованием bcrypt func Hash(password string) (string, error) { if password == "" { return "", fmt.Errorf("password cannot be empty") } hashedBytes, err := bcrypt.GenerateFromPassword([]byte(password), DefaultCost) if err != nil { return "", fmt.Errorf("failed to hash password: %w", err) } return string(hashedBytes), nil } // Verify проверяет соответствие пароля хешу func Verify(hashedPassword, password string) error { return bcrypt.CompareHashAndPassword([]byte(hashedPassword), []byte(password)) } // IsValid проверяет валидность пароля (минимальная длина) func IsValid(password string) bool { return len(password) >= 8 }