使用Java进行128位数据加密

时间:2008-09-08 06:13:20

标签: java cryptography

我需要通过使用至少128位密钥加密来存储一些敏感数据。我调查了javax.crypto包,发现有一些Cipher名称,比如 PBEWithMD5AndDES或PBEWithSHA1AndDESede,提供高达56位和80位(http://en.wikipedia.org/wiki/DESede)的加密。

我提到其他人的帖子,但那些主要使用RSA,据我所知,RSA通常适用于加密通信数据(使用私钥 - 公钥对)。我的需求是不同的,我只想存储数据并通过解密来检索它。因此,我不需要任何私钥 - 公钥对。

如果您对此有任何疑问,请与我们联系。

6 个答案:

答案 0 :(得分:8)

使用Advanced Encryption Standard(AES)。它支持密钥长度为128,192或256位。

algorithm很简单。 Sun Java网站在Java中加密section explaining how to do AES

来自维基百科......

  

......先进   加密标准(AES),也称为   作为Rijndael,是采用的分组密码   作为美国的加密标准   政府。它已被分析   广泛使用,现已在全球范围内使用,   就像它的情况一样   前身,数据加密   标准(DES)......

因此,根据经验,您不应该使用DES或其变体,因为它正在逐步淘汰。

截至目前,最好使用AES。还有其他选项,例如TwofishBlowfish等。请注意,Twofish可被视为Blowfish的高级版本。

答案 1 :(得分:4)

我过去在http://www.bouncycastle.org/取得了很大成功(他们也有C#版本)。

答案 2 :(得分:3)

您需要为JDK下载并安装无限强度JCE策略文件。对于JDK 6,它位于最底部的http://java.sun.com/javase/downloads/index.jsp

答案 3 :(得分:2)

结合3个不同的回复,我认为是正确答案。

Bouncycastle下载加密库,然后您需要从Oracle下载“Unlimited Strength Jurisdiction Policy”(文件位于下载页面的底部)。请务必阅读有关如何安装它的自述文件。

完成此操作后,使用Bountycastle软件包提供的示例代码,您应该能够加密数据。您可以使用tripple DES实现,它将为您提供112位密钥(通常称为128位,但其中只有112位实际上是安全的),或者如前所述,您可以使用AES。我的钱将用在AES上。

答案 4 :(得分:0)

我无论如何都不是加密专家(所以请大家多说这个建议),但我之前使用过Blowfish,我认为你可以根据需要使用它。还有一个名为Twofish的同一个人的新算法。

这是一个website with a Java implementation,但要小心许可证(它表示免费用于非商业用途)。您也可以从Bruce Schneier's website(两种算法的创建者)找到该链接。

答案 5 :(得分:0)

感谢Michael,在JCE尝试了很多东西之后,我终于选择了bouncycastle。

JCE支持AES加密和PBE基于密码的加密,但它不支持两者的组合。我希望在bouncycastle中找到同样的东西。

示例位于:http://forums.sun.com/thread.jspa?messageID=4164916