argon2_elixir v1.3.1 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

Link to this section Functions

Link to this function encodedlen_nif(t_cost, m_cost, parallelism, saltlen, hashlen, argon2_type) View Source

Calculate the length of the encoded hash.

Translate the error code to an error message.

Link to this function hash_nif(t_cost, m_cost, parallelism, password, salt, raw, hashlen, encodedlen, argon2_type, argon2_version) View Source

Hash a password using Argon2.

Link to this function hash_password(password, salt, opts \\ []) View Source

Hash a password using Argon2.

Configurable parameters

The following three parameters can be set in the config file:

  • t_cost - time cost

    • the amount of computation, given in number of iterations
    • 6 is the default
  • m_cost - memory usage

    • 16 is the default - this will produce a memory usage of 2 ^ 16 KiB (64 MiB)
  • parallelism - number of parallel threads

    • 1 is the default
  • argon2_type - argon2 variant to use

    • 0 (Argon2d), 1 (Argon2i) or 2 (Argon2id)
    • 1 is the default (Argon2i)

Production values

See the documentation for Argon2.Stats.

Test values

The following values can be used to speed up tests.

config :argon2_elixir,
  t_cost: 1,
  m_cost: 8

NB. do not use these values in production.

Options

There are six options (t_cost, m_cost, parallelism and argon2_type can be used to override the values set in the config):

  • :t_cost - time cost
  • :m_cost - memory usage
  • :parallelism - number of parallel threads
  • :format - output format

    • this 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 1 (Argon2i)

Examples

The following example changes the default t_cost and m_cost:

Argon2.Base.hash_password("password", "somesaltSOMESALT", [t_cost: 8, m_cost: 20])

In the example below, the Argon2 type is changed to Argon2id:

Argon2.Base.hash_password("password", "somesaltSOMESALT", [argon2_type: 2])

To use Argon2d, use argon2_type: 0.

Link to this function verify_nif(stored_hash, password, argon2_type) View Source

Verify a password using Argon2.