在实现Rijndael解密时是否可以不使用IV?

时间:2011-09-05 13:17:12

标签: c# encryption rijndael

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

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

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

有没有办法否定IV的效果?或者是否需要尝试获取加密中使用的IV?

3 个答案:

答案 0 :(得分:3)

如果密码已被用于在CBC模式下加密(is the default),那么你必须知道IV,没有办法解决它。

但是,由于IV的目的与密码的目的不同,有时您会发现IV先于加密数据(以便收件人可以轻松抓取它以便在解密时使用)。

答案 1 :(得分:3)

您可以使用ECB模式,它将忽略IV。但是,你需要一个IV用于其他模式,如CBC。

答案 2 :(得分:1)

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

根据您对前16个字符的描述,听起来您正在以CBC模式工作。请参阅此处的图表,了解您需要IV的原因:http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29