30 lines
690 B
Go
30 lines
690 B
Go
package secret
|
||
|
||
import (
|
||
"golang.org/x/crypto/bcrypt"
|
||
)
|
||
|
||
// Bcrypt permet de calculer un hash en utilisant l’algorithme Bcrypt.
|
||
type Bcrypt struct {
|
||
cost int
|
||
}
|
||
|
||
// Bcrypt initialise une fonction de hashage de type Bcrypt et de coût cost.
|
||
func NewBcrypt(cost int) Bcrypt {
|
||
return Bcrypt{cost: cost}
|
||
}
|
||
|
||
// Hash retourne le hash des bytes d’entrée.
|
||
func (h Bcrypt) Hash(data []byte) []byte {
|
||
hashed, _ := bcrypt.GenerateFromPassword(data, h.cost)
|
||
|
||
return hashed
|
||
}
|
||
|
||
// Compare vérifie qu’une donnée d’entrée a bien pour hash la valeur hashed.
|
||
func (h Bcrypt) Compare(data []byte, hashed []byte) bool {
|
||
err := bcrypt.CompareHashAndPassword(hashed, data)
|
||
|
||
return err == nil
|
||
}
|