Concentrate possibly dispersed entropy of Data and then expand it to
the desired length. Bytes is unified with a list of bytes of
length Length, and is suitable as input keying material and
initialization vectors to the symmetric encryption predicates.
Admissible options are:
- algorithm(+Algorithm)
- A hashing algorithm as specified to crypto_data_hash/3. The
default is a cryptographically secure algorithm. If you
specify a variable, then it is unified with the algorithm
that was used.
- info(+Info)
- Optional context and application specific information,
specified as an atom, string or list of bytes. The default
is the zero length atom ''.
- salt(+List)
- Optionally, a list of bytes that are used as salt. The
default is all zeroes.
- encoding(+Atom)
- Either
utf8
(default) or octet
, denoting
the representation of Data as in crypto_data_hash/3.
The info/1 option can be used to generate multiple keys from a
single master key, using for example values such as key
and
iv
, or the name of a file that is to be encrypted.
This predicate requires OpenSSL 1.1.0 or greater.
- See also
- - crypto_n_random_bytes/2 to obtain a suitable salt.
- - crypto_data_hash/3 to compute a HMAC signature.