onasty/internal/hasher/sha256.go(view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package hasher
import (
"crypto/sha256"
"encoding/hex"
)
type SHA256Hasher struct {
salt string
}
func NewSHA256Hasher(salt string) *SHA256Hasher {
return &SHA256Hasher{salt: salt}
}
func (h *SHA256Hasher) Hash(inp string) (string, error) {
hash := sha256.New()
if _, err := hash.Write([]byte(inp)); err != nil {
return "", err
}
return hex.EncodeToString(hash.Sum([]byte(h.salt))), nil
}
func (h *SHA256Hasher) Compare(hash, plain string) error {
expected, err := h.Hash(plain)
if err != nil {
return err
}
if expected != hash {
return ErrMismatchedHashes
}
return nil
}
|