AES-256加密与BouncyCastle轻量级API

7
我使用Java内置的加密库编写了一些(功能性)AES加密代码,代码如下,但我想使用256位密钥。然而,我希望这样做不需要用户安装无限制的加密策略文件。
现在,我听说使用BouncyCastle轻量级API可以让我做到这一点,但不幸的是我很难理解它并且很难找到任何帮助我的文档。
这是我的当前代码,其中“content”是要加密的字节数组:
KeyGenerator kgen = KeyGenerator.getInstance("AES");
int keySize = 128;
kgen.init(keySize);
SecretKey key = kgen.generateKey();
byte[] aesKey = key.getEncoded();
SecretKeySpec aesKeySpec = new SecretKeySpec(aesKey, "AES");
Cipher aesCipher = Cipher.getInstance("AES");
aesCipher.init(Cipher.ENCRYPT_MODE, aesKeySpec);
byte[] encryptedContent = aesCipher.doFinal(content);

我该如何使用BouncyCastle轻量级API重新实现这个?有人可以帮助我或者指引我一些简单的示例代码吗?

我还对允许256位密钥AES加密而无需用户安装无限制强度策略文件的其他解决方案感兴趣。

非常感谢!


在这里寻找PaddedBufferedBlockCipher的示例。 - President James K. Polk
您正在使用不安全的ECB编码“AES”,而不是“AES/CBC/PKCS5Padding”,并且似乎没有对IV进行任何操作(如果您只加密单个明文,则可以接受,但否则不行),出于某种原因,您将SecretKey转换为SecretKeySpec,这似乎是错误的方式... - Maarten Bodewes
1个回答

7
这个问题和答案是一个有用的起点。 256bit AES/CBC/PKCS5Padding with Bouncy Castle是下一个最好的查找位置,然后是LW APIs的测试代码,再是JCE Provider代码。JCE Provider代码是LW库的包装器 - 因此,如果您想知道如何做到这一点,那就是最好的地方。在这里,我指的是BC实现。

1
链接的SO答案是JCE与轻量级混合。 - alphakermit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接