Crypt implementation in pure Go. It provides a unified interface to varous hashing algorithms for key derivation.
func main() {
password := "password"
settings := "$argon2id$v=19$m=65536,t=2,p=4$c2FsdHNhbHQ" // salt = "saltsalt"
encoded, err := crypt.Crypt(password, settings)
if err != nil {
log.Fatal(err)
}
fmt.Println(encoded)
// Output: $argon2id$v=19$m=65536,t=2,p=4$c2FsdHNhbHQ$mxUf7CB5gEwtDSiHfZCvxj17E8XeTFh2fpti1ioD3SA
}
Currently, the following algorithms are supported:
Code | Name | Example |
---|---|---|
1 | MD5 | $1$deadbeef$Q7g0UO4hRC0mgQUQ/qkjZ0 |
5 | SHA256 | $5$saltstring$5B8vYYiY.CVt1RlTTf8KbXBH3hsxY/GNooZaBBGWEc5 |
6 | SHA512 | $6$saltstring$svn8UoSVapNtMuq1ukKS4tPQd8iKwSMHWjl/O817G3uBnIFNjnQJuesI68u4OTLiBFdcbYEdFCoEOfaS35inz1 |
2a | bcrypt | $2a$05$/OK.fbVrR/bpIqNJ5ianF.Sa7shbm4.OzKpvFnX1pQLmQW96oUlCq |
argon2i | Argon2i | $argon2i$v=19$m=65536,t=2$c29tZXNhbHQ$IMit9qkFULCMA/ViizL57cnTLOa5DiVM9eMwpAvPwr4 |
argon2id | Argon2id | $argon2id$v=19$m=65536,t=2,p=4$c29tZXNhbHQ$GpZ3sK/oH9p7VIiV56G/64Zo/8GaUw434IimaPqxwCo |
It's recommended that you used argon2id
for crypting passwords.
This implementation is inspired by crypt.
The code is licensed under Apache 2.0