Encryption 有没有办法在不使用iv的openssl中运行aes-128-cbc加密?

Encryption 有没有办法在不使用iv的openssl中运行aes-128-cbc加密?,encryption,cryptography,cbc-mode,initialization-vector,Encryption,Cryptography,Cbc Mode,Initialization Vector,我正试图用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。但是,

我正试图用
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
命令行参数

不,这是不可能的,CBC需要IV。但是,您可以将IV设置为全零。由于在加密之前,IV与第一块明文是异或的,这就意味着根本没有IV:您可以直接用分组密码加密第一块明文

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


对于AES,IV总是由16个字节组成,这可以归结为32个十六进制零,当然对于
openssl

-IV
命令行参数来说,这正是我想要的。我完全忘记了IV是异或的,所以我可以只留下0。还有一个问题,Maarten,这个键可能是一个单词而不是十六进制数字吗?AES的键可以是16、24或32个随机字节-不多也不少。但是,您可以使用密码哈希(带有salt和迭代计数)来生成AES密钥。这实际上是没有
-K
选项的
openssl
的标准行为,尽管它只使用8字节salt,更糟糕的是,使用迭代计数设置为1的弱密码散列方案。只要你的密码非常非常强就可以了。它会在你的文件中添加一个magic和salt前缀,特别是对你来说,它会从salt和密码中生成一个密钥和随机IV。对于学校项目,密钥可能由密钥的ASCII编码,后跟零值字节(最多16个字节)组成。无论哪种方式,老师都应该对这个问题有一个很好的理解。仅供参考:openssl v1.1.1支持一个更强大的密钥派生函数,其中密钥是使用pbkdf2和随机生成的salt从密码派生的,并且多次迭代sha256哈希(默认为10000)。更多信息请参见。谢谢你,马腾,这正是我想要的。我完全忘记了IV是异或的,所以我可以只留下0。还有一个问题,Maarten,这个键可能是一个单词而不是十六进制数字吗?AES的键可以是16、24或32个随机字节-不多也不少。但是,您可以使用密码哈希(带有salt和迭代计数)来生成AES密钥。这实际上是没有
-K
选项的
openssl
的标准行为,尽管它只使用8字节salt,更糟糕的是,使用迭代计数设置为1的弱密码散列方案。只要你的密码非常非常强就可以了。它会在你的文件中添加一个magic和salt前缀,特别是对你来说,它会从salt和密码中生成一个密钥和随机IV。对于学校项目,密钥可能由密钥的ASCII编码,后跟零值字节(最多16个字节)组成。无论哪种方式,老师都应该对这个问题有一个很好的理解。仅供参考:openssl v1.1.1支持一个更强大的密钥派生函数,其中密钥是使用pbkdf2和随机生成的salt从密码派生的,并且多次迭代sha256哈希(默认为10000)。有关更多信息,请参阅。我非常确定您必须努力避免在许多Stack Exchange站点上找到问题和答案,等等。AES CBC加密谜题…我很确定您必须努力避免在众多的堆栈交换站点上找到问题和答案,AES CBC密码谜题。。。