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