package argon2 import ( "crypto/rand" "encoding/base64" "fmt" "golang.org/x/crypto/argon2" ) func Hash(text string) (string, error) { salt := make([]byte, saltLength) _, err := rand.Read(salt) if err != nil { return "", err } hash := argon2.IDKey([]byte(text), salt, iterations, memory, parallelism, keyLength) saltB64 := base64.RawStdEncoding.EncodeToString(salt) hashB64 := base64.RawStdEncoding.EncodeToString(hash) encoded := fmt.Sprintf("$argon2id$v=19$m=%d,t=%d,p=%d$%s$%s", memory, iterations, parallelism, saltB64, hashB64) return encoded, nil }