【问题标题】:Password based encryption using AES in java 5 (JCE only)在 java 5 中使用 AES 进行基于密码的加密(仅限 JCE)
【发布时间】:2011-04-02 12:56:07
【问题描述】:

我想使用 AES(192 位或 256 位),但我不知道如何从用户提供的密码生成密钥。

我已经去了through this thread,并且能够在 Java 6 中运行该程序。但是,我需要在 Java 5 中运行相同的程序,并且 PBKDF2WithHmacSHA1 的 SecretKeyFactory 在 JDK 5 中不可用。

因此,本质上,我需要根据用户密码为 SecretKey 生成 192 位或 256 位,并且我希望在 java 5 中采用一种安全的方式来执行此操作。

帮助表示赞赏!

编辑 #1 为了避免卡住,我现在使用 MD5 中的 128 位(用户输入的密码 + 固定盐)作为 AES 的密钥。我知道这很糟糕,并且会在我找到生成密钥的好方法时对其进行更改。

【问题讨论】:

  • 如果您发布在 Java6 中工作的代码可能会有所帮助。
  • @Jim - 请参阅此问题的已接受答案 - stackoverflow.com/questions/992019/java-256bit-aes-encryption。该代码在 JDK6 中完美运行,但我没有想法让它适用于 JDK 5
  • 所以从更高版本的 Java 1.5 中获取代码并创建您自己的 API,或者使用 Bouncy Castle 进行同样的操作。不可能那么难。

标签: java security aes jce


【解决方案1】:

您有需要 PBKDF2WithHmacSHA1 的原因吗?

SecretKeyFactory 存在于 1.4.2 中,所以你可能会看到 here

【讨论】:

  • SecretKeyFactory 存在于 1.4.2 中,但它没有实现 PBKDF2WithHmacSHA1 算法。您粘贴的链接使用 KeyFactory 生成密钥,这不适合我的目的。我需要使用某种密钥分发功能从密码生成一个密钥——但我在 JDK 5 中找不到一个好方法
猜你喜欢
  • 2015-10-29
  • 2015-04-21
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 1970-01-01
  • 2021-06-21
  • 2014-01-14
相关资源
最近更新 更多