我认为我的问题需要一些我可能没有的基本知识。
我正在解密这样的字节数组:
var cipher = CipherUtilities.GetCipher("AES/CTR/NoPadding");
cipher.Init(false, new ParametersWithIV(new KeyParameter(bkey), bIV));
byte[] DecryptedChunk = cipher.ProcessBytes(EncryptedChunk, 0, ChunkSize);
我想了解如何将这个缓冲区切成 2 并解密前半部分和后半部分。
如果我只是这样做:
var cipher = CipherUtilities.GetCipher("AES/CTR/NoPadding");
cipher.Init(false, new ParametersWithIV(new KeyParameter(bkey), bIV));
byte[] FirstDecryptedChunk = cipher.ProcessBytes(FirstEncryptedChunk, 0, FirstChunkSize);
byte[] SecondDecryptedChunk = cipher.ProcessBytes(SecondEncryptedChunk, 0, SecondChunkSize);
那么第一个 Chunk 是可以的,但是第二个是错误的。
我在互联网上花了大约 6 个小时阅读,我找不到解释。与某种必须更新的计数器和IV有关吗?