Encryption 如何在OpenSSL EVP API中设置和使用初始化向量(IV)

Encryption 如何在OpenSSL EVP API中设置和使用初始化向量(IV),encryption,openssl,evp-cipher,Encryption,Openssl,Evp Cipher,我正在尝试使用用户输入的密码短语开发文件加密功能。我正在研究WiKi上的示例函数,但不明白“key”和“iv”究竟是如何工作的。通过实验,我发现我只需要相同的密钥值来解密文件,但不需要相同的iv!事实上,我在解密时使用了一个随机的iv字符串,它解密得很好。我计划从发件人的密码短语生成密钥,以便与文件收件人共享,但我不确定如何处理iv值?它是否需要与收件人共享并用于解密,或者我可以使用随机生成的值,或者我应该在程序中硬编码该值以进行加密和解密?在这种情况下,“iv”的用途是什么?请参见on Cry

我正在尝试使用用户输入的密码短语开发文件加密功能。我正在研究WiKi上的示例函数,但不明白“key”和“iv”究竟是如何工作的。通过实验,我发现我只需要相同的密钥值来解密文件,但不需要相同的iv!事实上,我在解密时使用了一个随机的iv字符串,它解密得很好。我计划从发件人的密码短语生成密钥,以便与文件收件人共享,但我不确定如何处理iv值?它是否需要与收件人共享并用于解密,或者我可以使用随机生成的值,或者我应该在程序中硬编码该值以进行加密和解密?在这种情况下,“iv”的用途是什么?

请参见on Crypto.SE。您应该说明操作模式,但我猜您正在使用CBC。您很可能正在使用IV,但它是堆栈上的随机垃圾。尝试在另一台机器上解密密码文本。它应该失败。或者,某些库或服务正在为IV提供一个空向量。将来,您可能应该在这里询问编程和开发问题。类似于“如何使用OpenSSL API设置IV”。谢谢!我更新了标题。是的,我正在使用CBC。