argon2_elixir v2.0.3 Argon2.Base View Source
Lower-level api for Argon2.
These functions can be useful if you want more control over some of the options. In most cases, you will not need to call these functions directly.
Link to this section Summary
Functions
Calculate the length of the encoded hash.
Translate the error code to an error message.
Hash a password using Argon2.
Hash a password using Argon2.
Verify a password using Argon2.
Link to this section Functions
encodedlen_nif(t_cost, m_cost, parallelism, saltlen, hashlen, argon2_type) View Source
Calculate the length of the encoded hash.
error_nif(error_code) View Source
Translate the error code to an error message.
hash_nif(t_cost, m_cost, parallelism, password, salt, raw, hashlen, encodedlen, argon2_type, argon2_version) View Source
Hash a password using Argon2.
hash_password(password, salt, opts \\ []) View Source
Hash a password using Argon2.
Options
There are six options:
:t_cost
- time cost:m_cost
- memory usage:parallelism
- number of parallel threads:format
- output formatthis value can be
:encoded
- encoded with Argon2 crypt format:raw_hash
- raw hash output in hexadecimal format:report
- raw hash and encoded hash, together with the options used
:encoded
is the default
:hashlen
- length of the hash (in bytes)- the default is 32
:argon2_type
- Argon2 type- this value should be 0 (Argon2d), 1 (Argon2i) or 2 (Argon2id)
- the default is 2 (Argon2id)
The t_cost
, m_cost
, parallelism
and argon2_type
can also be
set in the config. See the documentation for Argon2.Stats for more
information about choosing these values.
Examples
The following example changes the default t_cost
and m_cost
:
Argon2.Base.hash_password("password", "somesaltSOMESALT", [t_cost: 4, m_cost: 18])
In the example below, the Argon2 type is changed to Argon2d:
Argon2.Base.hash_password("password", "somesaltSOMESALT", [argon2_type: 0])
To use Argon2i, use argon2_type: 1
.
init() View Source
verify_nif(stored_hash, password, argon2_type) View Source
Verify a password using Argon2.