• Stars
    star
    9
  • Rank 1,939,727 (Top 39 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created almost 7 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Crypt implementation in pure Go

Crypt

Build Status Go Report Card Documentation

Crypt implementation in pure Go. It provides a unified interface to varous hashing algorithms for key derivation.

Example

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
}

Algorithm

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.

Links

This implementation is inspired by crypt.

License

The code is licensed under Apache 2.0