4

我正在使用 Rijndael 算法实现密文解密。不幸的是,我无法访问数据加密,并且只提供了密码(用于生成密钥)和算法类型。

我没有盐(似乎没问题),也没有静脉注射。现在,我的问题是我是否绝对必须拥有 IV 才能执行解密?我怀疑编写加密的开发人员没有使用盐或 IV(如果这可能的话)。

我试图将 IV 设置为 null,但没有运气,生成 Rijndael 实例会创建一个默认 IV,这会在解密后扭曲我的明文的前 16 个字符。

有什么办法可以抵消IV的影响吗?或者是否需要尝试获取加密中使用的 IV?

4

3 回答 3

3

如果密码已用于在 CBC 模式下加密(这是默认模式),那么您必须知道 IV,没有办法绕过它。

但是,由于 IV 的用途与密码的用途不同,有时您会发现 IV 附加在加密数据的前面(以便接收者在解密时可以轻松获取它使用)。

于 2011-09-05T13:20:18.707 回答
3

您可以使用 ECB 模式,它会忽略 IV。不过,对于 CBC 等其他模式,您需要一个 IV。

于 2011-09-05T13:21:46.367 回答
1

如果它是用 IV 加密的,那么是的,您将需要 IV 才能正确解密。

从您对前 16 个字符的描述来看,听起来您正在使用 CBC 模式。请参阅此处的图表了解为什么需要 IV:http ://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29 。

于 2011-09-05T13:20:38.223 回答