当前位置:  开发笔记 > 编程语言 > 正文

Rijndael在Java中的支持

如何解决《Rijndael在Java中的支持》经验,为你挑选了2个好方法。

我们需要在Java中进行一些Rijndael开发.

对文章,图书馆等有什么建议可以帮助我们吗?

任何指向密钥库维护的指针以及如何安全地存储密钥?

编辑:

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



1> Chochos..:

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字节倍数的块并调用update而不是doFinal(您只需在最后一个块上调用doFinal).


这恰恰相反,AES是Rijndael的一个子集
Rijndael不等于AES,而是具有一些限制的AES - 固定块大小为128位,并且不支持某些加密模式.任何完整的AES实现都应该可以用作Rijndael.
@BrunoRohée是对的.AES是Rijndael的子集,请查看http://stackoverflow.com/questions/748622/differences-between-rijndael-and-aes

2> erickson..:

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

我不能说我们使用什么库来满足FIPS认证要求.但CryptoJ还有其他更便宜的替代方案.

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

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有