【问题标题】:Java PBEWithMD5AndDESJava PBEWithMD5AndDES
【发布时间】:2010-11-20 01:32:20
【问题描述】:

我正在使用基于密码的加密。我最初的想法是使用 AES 加密包含密码的文件。原来基于密码的加密不支持 AES。它使用 DES。 AFAIK des 不安全。 PBEWithMD5AndDES 是否足够安全以推送我的数据,还是我应该寻找另一种实现方式?

【问题讨论】:

  • 您似乎在以一种令人困惑的方式使用某些表达式。 “基于密码的加密”是指使用从密码派生的密钥对文件进行加密的方案。 (例如,PKCS #5 标准是基于密码的加密方案)。您想要的是不同的东西,即安全密码存储/管理方案。因此 PBEWithMD5AndDES 不是您所需要的,无论它有多安全或不安全。
  • 这是一个彻底过时的问题,自 Java 6 起,AES 就支持基于密码的加密,尽管我应该提到它应该只用于 就地加密,因为它缺乏完整性保护。

标签: java encryption aes des


【解决方案1】:

从您的 cmets 看来,您想要做的是加密包含敏感信息的文件,使用基于密码的加密方案,并使用用户在解密时提供的密码。在这种情况下,敏感信息也恰好是密码,但这并不重要。 (您可能应该更新问题以使其更清楚)。

您做对了,您的问题只是 SunJCE Java 加密提供程序不支持 AES 进行基于密码的加密。您需要使用替代提供程序:例如,您可以使用Bouncy Castle 提供程序和算法"PBEWITHSHA256AND128BITAES-CBC-BC"。 (尽管名字异想天开,Bouncy Castle 却备受推崇)。

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

【讨论】:

  • 你可以用 100 美元代替 10,000 美元......鉴于使用 GPU 进行暴力破解的最新进展。
【解决方案2】:

如果您有可用的 Java 6,那么您需要的一切都可用。查看此question 并查看代码示例的已接受答案。由于您要加密文件,因此生成的 iv 应该添加到您正在写入密文的文件中,以便在解密期间可用。

【讨论】:

    【解决方案3】:

    您不应以salted hash digests 以外的任何形式保存密码。

    然后,您应该使用操作系统权限系统来使哈希密码文件只能由验证密码的用户读取。

    【讨论】:

    • 个人密码存储应用。一个玩具密码管理器。
    猜你喜欢
    • 1970-01-01
    • 2016-12-23
    • 2014-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多