我在解密某個文件中的某些數據時遇到了問題,我正在對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