java - 使用 BouncyCaSTLe 轻量级 API 的 AES-256 加密

标签 java encryption aes bouncycastle

我使用 Java 的内置加密库编写了一些(功能性)AES 加密代码,如下所示,但我想使用 256 位 key 。但是,我希望无需用户安装 Unlimited Strength Cryptography Policy 文件即可执行此操作。

现在,我听说使用 BouncyCaSTLe Lightweight 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 位 key AES 加密而无需用户安装无限强度策略文件的任何其他解决方案感兴趣。

非常感谢!

最佳答案

这个问答是一个有用的起点。

256bit AES/CBC/PKCS5Padding with Bouncy Castle

下一个最好的地方是 LW API 的测试代码,然后是 JCE 提供程序代码。 JCE 提供程序代码是 LW 库的包装器 - 所以如果您想知道如何做,这是查看它的最佳位置。

我所说的 JCE 提供程序代码是指 BC 实现。

关于java - 使用 BouncyCaSTLe 轻量级 API 的 AES-256 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9555023/

相关文章:

Python密码: how to build a complexer shifter system?

node.js - 使用带有对称 key 加密的 unload 命令解密卸载的 s3 文件

c - 使用 C 中的 openssl 库进行简单的 AES 加密解密

java - 内部ArrayList的ensureCapacity()

java - java中的非重写方法?

javascript - 如何将 HMAC 添加到 CryptoJS AES 加密?

java - 为什么我的服务器 (Go) 无法解密客户端 (Java) 消息?

security - 使用 PKBDF2、AES、IV 和 salt 进行更好的实践

JavaFX 按钮不可点击

java - 如何模拟 Autowired 对象(java)并将其注入(inject)到 Spock 中的 spy 对象中