package security import "golang.org/x/crypto/bcrypt" // PasswordService interface defines the contract for password operations type PasswordService interface { HashPassword(password string) (string, error) CheckPasswordHash(password, hash string) bool } // PasswordServiceImpl implements PasswordService using bcrypt type PasswordServiceImpl struct{} // NewPasswordService creates a new password service func NewPasswordService() PasswordService { return &PasswordServiceImpl{} } // HashPassword hashes a password using bcrypt func (p *PasswordServiceImpl) HashPassword(password string) (string, error) { bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14) return string(bytes), err } // CheckPasswordHash compares a password with its hash func (p *PasswordServiceImpl) CheckPasswordHash(password, hash string) bool { err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password)) return err == nil }