AES加密与BouncyCastle: AESEngine, AESFastEngine或aeslightenengin

本文关键字:AESFastEngine aeslightenengin AESEngine 加密 BouncyCastle AES | 更新日期: 2023-09-27 18:07:22

我想移植这个简单的JAVA示例…

基于Bouncycastle的AES加密/解密J2ME示例

…并有以下3个问题:

  1. 据我所知,JAVA示例使用AESEngine进行加密/解密操作。AESEngine与AESFastEngine和aeslightenengine有什么区别?不幸的是,我不理解文档中给出的信息:http://www.bouncycastle.org/docs/docs1.6/index.html

  2. 我想为我加密的每个文件使用一个新的加密密钥。我应该使用哪种分组密码操作模式:AES。CBC, AES。循环流化床,AES。欧洲央行或aes。富含http://www.bouncycastle.org/docs/docs1.6/index.html b

  3. 我的假设是否正确,在我的情况下,我不必使用iv/salt(这意味着我必须使用静态iv?),因为我使用AES.KeyGen128()进行密钥生成并仅使用一次?
    http://www.bouncycastle.org/docs/docs1.6/index.html

希望我的问题没有造成太多的混乱;-)我但是我很感激你能给我的每一个答案,澄清或反馈。

迈克

AES加密与BouncyCastle: AESEngine, AESFastEngine或aeslightenengin

  1. 我读的文件说,AESEngine, FastEngine和lightenengine都采取不同的权衡内存和速度。您必须自己进行测试,以确定这些权衡是否与您的场景相关。

  2. 您需要阅读各种AES模式。不同的模式有不同的优势和属性,根据您的场景,这可能或多或少适用或可取。所以你问题的答案是"看情况而定"

  3. 。您将需要一个IV。至于salt,它通常与密码短语一起使用,以生成实际的加密密钥和IV,通常通过PKBDF2。这超出了AES的范围,但它是一种典型的用法。


最后你没有问,但是....你为什么要把代码移植到c#上?. net内置AES加密。你不需要移植任何东西,你只需要使用。net基类库。只要确保您使用相同的密钥大小和模式,并确保您的密钥+iv在每一边都是相同的,并且. net BCL AES类将与J2ME的BouncyCastle内容进行互操作。