有什么方法可以在没有 iv 的情况下在 openssl 中进行 运行 aes-128-cbc 加密吗?

Is there any way to run aes-128-cbc encryption in openssl without iv?

我正在尝试使用 openssl 使用 aes-128-cbc 加密来加密文本文件,我想知道是否有一种方法可以只使用密钥而不是 iv 来加密它?

每次我尝试运行:

openssl enc -aes-128-cbc -e -in dummy_file.txt -out dummy.aes-128-cbc.bin -K 00112233445566778889aabbccddeeff

我收到错误提示 iv undefined,它生成的加密文件是空的,甚至不是二进制文件。

不,那不可能,CBC 需要 IV。但是,您可以将 IV 设置为全零。由于 IV 在加密之前与第一个明文块进行异或运算,这归结为根本没有 IV:您将直接使用分组密码对第一个明文块进行加密。

请注意,使用相同的密钥和 IV 创建多个密文不会产生安全的密码。对于 CBC,需要有一个随机的(或至少不可预测的)IV。否则攻击者可以至少看到哪些明文以相同的数据块开头。

对于 AES,IV 始终由 16 个字节组成,归结为 32 个十六进制零,当然对于 openssl-iv 命令行参数也是如此。