我想移植这个简单的 JAVA 例子...
AES Encryption/Decryption with Bouncycastle Example in J2ME
...到 C# 并有以下两个 3 个问题:
据我了解,JAVA 示例使用 AESEngine 进行加密/解密操作。 AESEngine 与 AESFastEngine 和 AESLightEngine 有什么区别?不幸的是,我不理解文档中提供的信息:http://www.bouncycastle.org/docs/docs1.6/index.html
我想为我加密的每个文件使用一个新的加密 key 。我应该使用哪种分组密码操作模式:AES.CBC、AES.CFB、AES.ECB 或 AES.OFB http://www.bouncycastle.org/docs/docs1.6/index.html
我的假设是否正确,在我的情况下我不必使用 iv/salt(这意味着我必须使用静态 iv?)因为我使用 AES.KeyGen128 () 用于 key 生成并且只使用一次?
http://www.bouncycastle.org/docs/docs1.6/index.html
希望我的问题不会造成太多困惑 ;-) 我非常感谢您给我的每一个答案、澄清或反馈。
迈克
最佳答案
我在阅读文档时说,AESEngine、FastEngine 和 LightEngine 都在内存与速度之间进行了不同的权衡。您必须自己测试以确定这些权衡是否与您的场景相关。
您需要阅读各种 AES 模式。不同的模式具有不同的优势和属性,它们可能或多或少适用或需要,具体取决于您的场景。所以你的问题的答案是“视情况而定”。
没有。您将需要静脉注入(inject)。就盐而言,它通常与密码一起使用以生成实际的加密 key 和 IV,通常通过 PKBDF2。这超出了 AES 的范围,但它是一种典型的用法。
最后你没有问,但是......你为什么要将该代码移植到 C#? .NET 内置了 AES 加密。您不需要移植任何东西,您可以只使用 .NET 基类库。只需确保您使用相同的 key 大小和模式,并确保您的 key +iv 在每一侧都相同,.NET BCL AES 类将与 J2ME 的 BouncyCaSTLe 内容互操作。
关于c# - 使用 BouncyCaSTLe : AESEngine, AESFastEngine 或 AESLightEngine 进行 AES 加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7278673/