我在一个文件中生成了一个随机的256位对称密钥,用于使用OpenSSL命令行加密某些数据,我需要使用OpenSSL库以编程方式对其进行解密.我没有成功,我认为问题可能出在我正在使用(或不使用)的初始化向量中.
我使用以下命令加密数据:
/usr/bin/openssl enc -aes-256-cbc -salt -in input_filename -out output_filename -pass file:keyfile
Run Code Online (Sandbox Code Playgroud)
我正在使用以下调用来初始化数据的解密:
EVP_DecryptInit_ex(ctx, EVP_aes_256_cbc(), nullptr, keyfile.data(), nullptr))
Run Code Online (Sandbox Code Playgroud)
keyfile是一个vector<unsigned char>保存密钥的32个字节.我的问题是关于最后一个参数.它应该是密码算法的初始化向量.加密时我没有指定IV,因此必须使用某些默认值.
为该参数传递nullptr是否意味着"使用默认值"?是否为默认值,并且没有任何内容添加到第一个密码块?
我应该提一下,我能够在不提供IV的情况下从命令行解密.