# README
go-argonize
Go package to facilitate the use of the Argon2id password hashing algorithm from the "crypto/argon2" package.
go get "github.com/KEINOS/go-argonize"
func Example() {
// Your strong and unpredictable password
password := []byte("my password")
// Password hash your password
hashedObj, err := argonize.Hash(password)
if err != nil {
log.Fatal(err)
}
// View the hashed password
fmt.Println("Passwd to save:", hashedObj.String())
// Verify password (golden case)
if hashedObj.IsValidPassword([]byte("my password")) {
fmt.Println("the password is valid")
} else {
fmt.Println("the password is invalid")
}
// Verify password (wrong case)
if hashedObj.IsValidPassword([]byte("wrong password")) {
fmt.Println("the password is valid")
} else {
fmt.Println("the password is invalid")
}
// Output:
// Passwd to save: $argon2id$v=19$m=65536,t=1,p=2$ek6ZYdlRm2D5AsGV98TWKA$QAIDZEdIgwohrNX678mHc448LOmD7jGR4BGw/9YMMVU
// the password is valid
// the password is invalid
}
- View more examples and advanced usages @ pkg.go.dev
Contributing
Any Pull-Request for improvement is welcome!
- Branch to PR:
main
- CIs on PR/Push:
- unit-tests
- Inclues compatibility tests against PHP and Python
- golangci-lint
- platform-tests
- Tests on Win, macOS and Linux
- codeQL-analysis
- unit-tests
- Our Security Policy
Statuses
License, copyright and credits
- MIT, Copyright (c) 2022 KEINOS and the go-Argonize contributors.
- This Go package is strongly influenced by an article by Alex Edwards.
# Functions
DecodeHashGob decodes gob-encoded byte slice into a Hashed object.
DecodeHashStr decodes an Argon2id formatted hash string into a Hashed object.
Hash returns a Hashed object from the password using the Argon2id algorithm.
HashCustom returns a Hashed object from the password using the Argon2id algorithm.
NewParams returns a new Params object with default values.
NewSalt returns a new Salt object with a random salt and given length.
RandomBytes returns a random number of byte slice with the given length.
# Constants
IterationsDefault is the default number of iterations of the parameter used by the Argon2id algorithm.
KeyLengthDefault is the default key length used in the Argon2id algorithm parameters.
MemoryCostDefault is the default amount of memory (KiB) used by the algorithm parameters.
ParallelismDefault is the default number of threads used in the algorithm parameters.
SaltLengthDefault is the default length of the salt used in the Argon2id algorithm parameters.
# Variables
RandRead is a copy of `crypto.rand.Read` to ease testing.
# Type aliases
Salt holds the salt value.