我需要储存一些敏感数据的加密它有至少128位密钥。我调查了进入内加密软件包,并发现存在某些密码姓名,就像 PBEWithMD5AndDES或PBEWithSHA1AndDESede其提供加密的高达56位和80位(http://en.wikipedia.org/wiki/DESede).

我称其他人员员额,但这些都是主要使用RSA,并在我的理解RSA是一般适用的加密的通信数据(与私营-公共密钥对)。我需要的是不同的,我只是想要将数据存储和检索回由解密。因此,我不需要任何私人-公共密钥对。

请让我知道如果你有任何想法。

有帮助吗?

解决方案

使用 先进的加密标准 (AES)。它支持关键的长度128、192或256位。

算法 很简单。太阳Java的网站具有一个 部分解释如何做到AES 加密。

从维基百科...

...先进的 加密的标准(AES),也称 Rijndael,是一块密码通过了 作为一个加密的标准,通过美国政府。它已分析 广泛,现在是全球范围内使用, 就是这种情况与它的 前任、数据加密 标准(DES)...

因此,作为一个规则的拇指你是不是应该使用DES或其变异体,因为它正在逐步淘汰。

现在,最好是使用AES。还有其他的选择喜欢的 Twofish, 河豚 等等。注意Twofish可以被视为一个先进的版本河豚。

其他提示

我已经有了良好的成功在过去 http://www.bouncycastle.org/ (他们有C#版本)。

你需要下载和安装的无限的力量JCE政策文件JAVA.为JAVA6,它是在 http://java.sun.com/javase/downloads/index.jsp 在最底层。

合成3个不同的答复给出了我认为是正确的答案。

下载加密库 Bouncycastle 然后你需要下载的"无限力量管辖权的政策"从 Oracle (本文件是在底下载的页)。确保你读Readme文件的关于如何进行安装。

一旦你已经做到了这一点,与使用代码样本提供Bountycastle包你应该能够加密数据。你可以用一个特里普尔DES执行,这将给你112位密钥(常常称为128位,但是只有112他们是实际上的安全),或者如先前所说,你可以使用AES。我的钱会在AES。

我不是一个密码专家通过任何手段(所以采取这个建议与一粒盐),但是我有用 河豚 之前,我想你可以用它为你需要什么。还有一个较新的算法由同一个叫 Twofish.

这里是一个 网站有一个Java执行情况, 但谨慎的许可(它说,免费为非商业用途)。你可以找到的链接,还从 布鲁斯的网站 (创作者的两个算法)。

谢谢迈克尔,之后,尝试了许多事情在JCE,我最后解决bouncycastle.

JCE支持AES于加密和PBE用于基于密码加密,但它不支持两者的结合。我想同样的事情,我现在bouncycastle.

例是: http://forums.sun.com/thread.jspa?messageID=4164916

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top