//go:build ignore package main import ( "crypto/rand" "encoding/base64" "fmt" "golang.org/x/crypto/argon2" ) func main() { password := "admin123" memory := 64 * 1024 iterations := 3 parallelism := 2 saltLength := 16 keyLength := 32 salt := make([]byte, saltLength) rand.Read(salt) hash := argon2.IDKey([]byte(password), salt, uint32(iterations), uint32(memory), uint8(parallelism), uint32(keyLength)) b64Salt := base64.RawStdEncoding.EncodeToString(salt) b64Hash := base64.RawStdEncoding.EncodeToString(hash) encodedHash := fmt.Sprintf("$argon2id$v=%d$m=%d,t=%d,p=%d$%s$%s", argon2.Version, memory, iterations, parallelism, b64Salt, b64Hash) fmt.Println(encodedHash) }