我正在使用 .NET,并且我编写了一个很棒的例程 (xD),它使用 AES256 CBC 加密和解密文件。它工作得很好,但现在他们告诉我加密文件的大小必须与解密文件的大小相同。(我发誓,其他一些 API 有问题,不是我的错。)
所以,我已经尝试了我能找到的一切,但没有任何效果。.NET Framework 有一个 CipherMode.CTS,看起来与我需要的完全一样,但不幸的是,它目前不受支持。
我试图将填充设置为无,但当然我有错误,因为块大小小于它应该是的。
想法?
编辑:我设法以两种方式解决了这个问题:
使用 .NET API SymmetricAlgorithm alg = new RijndaelManaged(); alg.Mode = CipherMode.CFB; alg.Padding = PaddingMode.None; alg.FeedbackSize = 8;
使用 BouncyCastle API 的 IBufferedCipher cipher = new CtsBlockCipher(new CbcBlockCipher(new AesFastEngine()));
希望这可以帮助其他有同样问题的人:)