Java PBewithmD5和DES

Java PBewithmD5和DES,java,encryption,aes,des,Java,Encryption,Aes,Des,我正在使用基于密码的加密。我最初的想法是使用AES加密包含密码的文件。事实证明,基于密码的加密不支持AES。它使用DES。阿法克德不安全。PBewithmD5和DES是否足够安全,可以插入我的数据,还是应该寻找其他实现 您不应以任何形式保存密码,除非 然后,您应该使用操作系统权限系统使散列密码文件仅由验证密码的用户可读。从您的评论中可以看出,您希望做的是使用基于密码的加密方案加密包含敏感信息的文件,使用用户在解密时提供的密码。本例中的敏感信息也恰好是密码,但这并不是真正相关的。(您可能应该更新问

我正在使用基于密码的加密。我最初的想法是使用AES加密包含密码的文件。事实证明,基于密码的加密不支持AES。它使用DES。阿法克德不安全。PBewithmD5和DES是否足够安全,可以插入我的数据,还是应该寻找其他实现

您不应以任何形式保存密码,除非


然后,您应该使用操作系统权限系统使散列密码文件仅由验证密码的用户可读。

从您的评论中可以看出,您希望做的是使用基于密码的加密方案加密包含敏感信息的文件,使用用户在解密时提供的密码。本例中的敏感信息也恰好是密码,但这并不是真正相关的。(您可能应该更新问题以使其更清楚)

您做的是正确的,您的问题只是SunJCE Java加密提供程序不支持AES进行基于密码的加密。您需要使用一个替代的提供程序:例如,您可以将该提供程序与算法
“pbewithsha256和128bitaes-CBC-BC”
一起使用。(尽管名字很怪,但Bouncy Castle很受尊敬)


至于“DES对我的数据是否足够安全”,如果你保护的数据对攻击者来说价值不到大约10000美元,那么在2009年,它可能就足够安全了。2014年,如果您的数据值得加密,答案是否定的。

如果您有可用的Java 6,那么您需要的一切都是可用的。查看此内容,并查看代码示例的公认答案。由于您要加密文件,因此生成的iv应该在您将密文写入的文件之前,以便在解密过程中可用。

这是一个存储密码的个人应用程序。一个玩具密码管理器。看起来你正在用一种令人困惑的方式使用一些表达式。“基于密码的加密”指的是一种方案,其中文件使用从passowrd派生的密钥进行加密。(例如,PKCS#5标准是一种基于密码的加密方案)。您需要的是不同的东西,即安全的密码存储/管理方案。因此,无论多么安全或不安全,PBEWithMD5AndDES都不是您所需要的。这是一个完全过时的问题,从Java 6开始,AES就支持基于密码的加密,虽然我应该提到,它应该只用于就地加密,因为它缺乏完整性保护。你可以用$100替换$10000。。。鉴于最近使用GPU进行暴力强迫的进展。