使用C#AesCryptoServiceProvider,IV似乎只会在解密期间影响第一个块

时间:2012-02-17 16:31:14

标签: c# aescryptoserviceprovider

我是这个话题的新手,但我做了几天的调查和测试。我正在运行一些C#示例代码来测试一些AesCryptoServiceProvider功能。我盯着的测试项目来自: http://msdn.microsoft.com/en-us/library/system.security.cryptography.aescryptoserviceprovider.aspx

我修改了示例代码,因此我可以指定自己的密钥和初始化向量,使用128位的块和密钥大小,并为CreateEncryptor()和CreateDecryptor()的AES对象参数指定CBC操作模式。 / p>

我所看到的是,使用任意IV进行解密只影响第一个16字节块的结果 - 所有其他字节都被成功解密。

问:基于下面引用的图表,似乎初始化向量应该对每个加密的密码数据块产生影响。那么为什么选择IV会导致第16个字节后成功解密(只要使用正确的密钥)?如果这是预期的结果,那么IV仅用于非常小的数据集吗? http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation#Cipher-block_chaining_.28CBC.29

感谢。

0 个答案:

没有答案