21 lines
426 B
Go
21 lines
426 B
Go
package crypto
|
|
|
|
import (
|
|
"crypto/rand"
|
|
"encoding/base64"
|
|
"log"
|
|
|
|
"golang.org/x/crypto/argon2"
|
|
)
|
|
|
|
func PasswordHash(password, salt string) string {
|
|
return string(argon2.Key([]byte(password), []byte(salt), 3, 32*1024, 4, 32))
|
|
}
|
|
|
|
func GenerateKey() string {
|
|
key := [32]byte{}
|
|
if _, err := rand.Read(key[:]); err != nil {
|
|
log.Fatal("can't generate a valid key", err)
|
|
}
|
|
return base64.StdEncoding.EncodeToString(key[:])
|
|
}
|