我在解密某个文件中的某些数据时遇到了问题,我正在对RijndaelManaged
使用以下设置。这应该是正确的。AES解密存在的问题
RijndaelManaged aesAlg = new RijndaelManaged
{
KeySize = 128,
Mode = CipherMode.CBC,
Padding = PaddingMode.None,
Key = new byte[] { 0x32, 0x1F, 0x2A, 0xEE, 0xAA, 0x58, 0x4A, 0xB4, 0x9A, 0x6C, 0x9E, 0x09, 0xD5, 0x9E, 0x9C, 0x6F }
};
但是,每当我使用这些设置前16个字节是不正确的,而剩下的就是正确的。但是,我切换到Mode = CipherMode.ECB
前16个字节是正确的,其余是不正确的。我知道CBC使用来自前一个区块的信息来帮助加密/解密,而ECB不这样做。有什么额外的,我失踪?
这是关于我想要做什么的一些更多信息。我正在阅读的文件大约25千兆字节,实际上是一个包含多个文件的包。我确实有一个名为quickbms的程序的脚本,能够提取这些文件,我试图将其转换为我自己的程序。该脚本只提供了一个关键,并放弃了IV。单独的块单独加密,并且我修改了脚本以输出块并将结果与此进行比较。同时,我通过提取前16个字节并使用ECB解密,然后使用CBC解密整个数据块,并用CBC从ECB中获取CBC的前16个字节来覆盖结果。这产生了相同的结果。
该文件是如何加密的?你有多确定该文件实际上是否正确?文件有多大? –
如果您使用CBC模式,那么IV在哪里?它是否预置在密文中,还是需要从外部提供? –
我更新了帖子,提供了更多信息来解释我正在尝试做什么以及我拥有的信息。 – 7H3LaughingMan