$manlookup

openssl-kdf

(1ssl)

perform Key Derivation Function operations

User commands12 optionsopenssl 3.5.6-1~deb13u2
openssl kdf [-help] [-cipher] [-digest] [-mac] [-kdfopt nm:v] [-keylen num] [-out filename] [-binary] [-provider name] [-provider-path path] [-provparam [name:]key=value] [-propquery propq] kdf_name

Options

12
-help

Print a usage message.

-keylennum

The output size of the derived key. This field is required.

-outfilename

Filename to output to, or standard output by default.

-binary

Output the derived key in binary form. Uses hexadecimal text format if not specified.

-ciphername

Specify the cipher to be used by the KDF. Not all KDFs require a cipher and it is an error to use this option in such cases.

-digestname

Specify the digest to be used by the KDF. Not all KDFs require a digest and it is an error to use this option in such cases. To see the list of supported digests, use "openssl list -digest-commands".

-macname

Specify the MAC to be used by the KDF. Not all KDFs require a MAC and it is an error to use this option in such cases.

-kdfoptnm

Passes options to the KDF algorithm. A comprehensive list of parameters can be found in "PARAMETERS" in EVP_KDF(3). Common parameter names used by EVP_KDF_CTX_set_params() are:

-providername

-provider-pathpath

-provparam[name:]key=value

-propquerypropq

See "Provider Options" in openssl(1), provider(7), and property(7).

DESCRIPTION

The key derivation functions generate a derived key from either a secret or password.

EXAMPLES

Use TLS1-PRF to create a hex-encoded derived key from a secret key and seed:

    openssl kdf -keylen 16 -kdfopt digest:SHA2-256 -kdfopt key:secret \
                -kdfopt seed:seed TLS1-PRF

Use HKDF to create a hex-encoded derived key from a secret key, salt and info:

    openssl kdf -keylen 10 -kdfopt digest:SHA2-256 -kdfopt key:secret \
                -kdfopt salt:salt -kdfopt info:label HKDF

Use SSKDF with KMAC to create a hex-encoded derived key from a secret key, salt and info:

    openssl kdf -keylen 64 -kdfopt mac:KMAC-128 -kdfopt maclen:20 \
                -kdfopt hexkey:b74a149a161545 -kdfopt hexinfo:348a37a2 \
                -kdfopt hexsalt:3638271ccd68a2 SSKDF

Use SSKDF with HMAC to create a hex-encoded derived key from a secret key, salt and info:

    openssl kdf -keylen 16 -kdfopt mac:HMAC -kdfopt digest:SHA2-256 \
                -kdfopt hexkey:b74a149a -kdfopt hexinfo:348a37a2 \
                -kdfopt hexsalt:3638271c SSKDF

Use SSKDF with Hash to create a hex-encoded derived key from a secret key, salt and info:

    openssl kdf -keylen 14 -kdfopt digest:SHA2-256 \
                -kdfopt hexkey:6dbdc23f045488 \
                -kdfopt hexinfo:a1b2c3d4 SSKDF

Use SSHKDF to create a hex-encoded derived key from a secret key, hash and session_id:

    openssl kdf -keylen 16 -kdfopt digest:SHA2-256 \
                -kdfopt hexkey:0102030405 \
                -kdfopt hexxcghash:06090A \
                -kdfopt hexsession_id:01020304 \
                -kdfopt type:A SSHKDF

Use PBKDF2 to create a hex-encoded derived key from a password and salt:

    openssl kdf -keylen 32 -kdfopt digest:SHA256 -kdfopt pass:password \
                -kdfopt salt:salt -kdfopt iter:2 PBKDF2

Use scrypt to create a hex-encoded derived key from a password and salt:

    openssl kdf -keylen 64 -kdfopt pass:password -kdfopt salt:NaCl \
                -kdfopt n:1024 -kdfopt r:8 -kdfopt p:16 \
                -kdfopt maxmem_bytes:10485760 SCRYPT

NOTES

The KDF mechanisms that are available will depend on the options used when building OpenSSL.

HISTORY

Added in OpenSSL 3.0

See also