30 lines
585 B
Go
30 lines
585 B
Go
package hashing
|
|
|
|
import (
|
|
"RenewCMS/internal/domain/hash"
|
|
|
|
"golang.org/x/crypto/bcrypt"
|
|
)
|
|
|
|
const bcryptCost = 12
|
|
|
|
type BcryptHasher struct{}
|
|
|
|
func NewBcryptHasher() *BcryptHasher {
|
|
return &BcryptHasher{}
|
|
}
|
|
|
|
func (b *BcryptHasher) Hash(value string) (string, error) {
|
|
hashed, err := bcrypt.GenerateFromPassword([]byte(value), bcryptCost)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
return string(hashed), nil
|
|
}
|
|
|
|
func (b *BcryptHasher) Compare(hashed string, value string) error {
|
|
return bcrypt.CompareHashAndPassword([]byte(hashed), []byte(value))
|
|
}
|
|
|
|
var _ hash.Hasher = &BcryptHasher{}
|