OpenSSL PKCS#5 v1.5 EVP_BytesToKey
OpenSSL allows for salted or unsalted key derivation. *Unsalted key
derivation is a security risk and is not recommended.* If a salt is
present, the first 8 bytes of the input are the ASCII string "Salted__"
(0x53 61 6C 74 65 64 5F 5F
) and the next 8 bytes are the
ASCII-encoded salt. On decryption, the salt is read in and combined with the password to
derive the encryption key and IV. If there is no salt header, the entire input is
considered to be the cipher text.
For new KDFs, each of which allow for non-deterministic IVs, the IV must be stored
alongside the cipher text. This is not a vulnerability, as the IV is not required to be
secret, but simply to be unique for messages encrypted using the same key to reduce the
success of cryptographic attacks. For these KDFs, the output consists of the salt,
followed by the salt delimiter, UTF-8 string "NiFiSALT" (0x4E 69 46
69 53 41 4C 54
) and then the IV, followed by the IV delimiter, UTF-8 string
"NiFiIV" (0x4E 69 46 69 49 56
), followed by the cipher
text.