Java 中的 Rijndael 支持

新手上路,请多包涵

我们需要用 Java 进行一些 Rijndael 开发。

对文章、图书馆等有什么帮助的建议吗?

关于密钥库维护以及如何安全存储密钥的任何指示?

编辑:

它需要是开源的。本质上,它只是使用 Rijndael 对数据进行标准加密/解密。

原文由 rbrayb 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 664
2 个回答

Java 包括开箱即用的 AES。 Rijndael 是 AES。您不需要任何外部库。你只需要这样的东西:

 byte[] sessionKey = null; //Where you get this from is beyond the scope of this post
byte[] iv = null ; //Ditto
byte[] plaintext = null; //Whatever you want to encrypt/decrypt
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
//You can use ENCRYPT_MODE or DECRYPT_MODE
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(sessionKey, "AES"), new IvParameterSpec(iv));
byte[] ciphertext = cipher.doFinal(plaintext);

就是这样,用于加密/解密。如果您正在处理大量数据,那么您最好读取 16 字节的倍数的块并调用更新而不是 doFinal(您只需在最后一个块上调用 doFinal)。

原文由 Chochos 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于一个很棒的免费图书馆,我强烈推荐 BouncyCastle。 它得到积极维护,质量很高,并且有大量的代码示例。对于参考文档,您将不得不更多地依赖一般的 JCE 文档。

我不能说我们使用什么库来满足 FIPS 认证要求。但是 CryptoJ 的替代品要便宜得多。

通常,我建议为您使用 Rijndael 等对称密码加密的每条消息生成一个新密钥,然后使用 RSA 等非对称算法加密该密钥。这些私钥可以存储在受密码保护的基于软件的密钥存储中,例如 PKCS #12 或 Java 的“JKS”,或者为了更好的安全性,存储在“智能卡”硬件令牌或其他加密硬件模块中。

原文由 erickson 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏