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
|
|||
|
}
|