View Source Pbkdf2.Base (pbkdf2_elixir v2.3.1)
Base module for the Pbkdf2 password hashing library.
Summary
Functions
Generates a random salt.
Hash a password using Pbkdf2.
Verify a password by comparing it with the stored Pbkdf2 hash.
Functions
Generates a random salt.
This function takes one optional argument - a keyword list (see below for more details).
Options
The following options are available:
:salt_len- the length of the random salt- the default is 16 bytes
- for more information, see the 'Salt length recommendations' section below
:format- the length of the random salt- the default is
:modular(modular crypt format) - the other available options are
:djangoand:hex
- the default is
Examples
Here is an example of generating a salt with the default salt length and format:
Pbkdf2.Base.gen_salt()To generate a different length salt:
Pbkdf2.Base.gen_salt(salt_len: 32)And to generate a salt in Django output format:
Pbkdf2.Base.gen_salt(format: :django)Salt length recommendations
In most cases, 16 bytes is a suitable length for the salt. It is not recommended to use a salt that is shorter than this (see below for details and references).
According to the Pbkdf2 standard, the salt should be at least 8 bytes long, but according to NIST recommendations, the minimum salt length should be 16 bytes.
Hash a password using Pbkdf2.
Options
There are four options (rounds can be used to override the value
in the config):
:rounds- the number of rounds- the amount of computation, given in number of iterations
- the default is 160_000
- this can also be set in the config file
:format- the output format of the hash- the default is
:modular- modular crypt format - the other available formats are:
:django- the format used in django applications:hex- the hash is encoded in hexadecimal
- the default is
:digest- the sha algorithm that pbkdf2 will use- the default is sha512
:length- the length, in bytes, of the hash- the default is 64 for sha512 and 32 for sha256
Verify a password by comparing it with the stored Pbkdf2 hash.