【问题标题】:Implimentation for MD5 Message Digest for Passwords in JavaJava中密码的MD5消息摘要的实现
【发布时间】:2015-10-09 01:17:58
【问题描述】:

我们为一个学校项目制作了一个系统,我们的教授告诉我们不要将密码以纯文本形式存储在数据库中。她希望我们加密这些密码以确保安全,因为我们的系统将处理大量机密数据。所以我们决定使用 MD5 对密码进行哈希处理,问题是我真的不明白我们将如何在登录过程中实现它。

【问题讨论】:

  • “大量机密数据”对于 MD5 看起来不太合适;此外……你到目前为止做了什么?
  • 这是一个学校项目,我们知道还有其他更好的选择。似乎这是最简单的方法。

标签: java md5


【解决方案1】:

欢迎来到 SO。我认为已经回答了与您类似的帖子,但我会告诉您我是如何解决的。

private String encryptPassword(String password) throws NoSuchAlgorithmException{

    MessageDigest md = MessageDigest.getInstance("MD5");
    md.update(password.getBytes());
    byte[] digest = md.digest();
    StringBuilder stringBuilder = new StringBuilder();
    for (byte b : digest) {
        stringBuilder.append(String.format("%02x", b & 0xff));
    }

    return stringBuilder.toString();
}

如您所见,上面的方法就是我加密密码的方法,密码是通过参数传递的字符串。 MD5 是一种单向加密,因此您无法使用 Java 对其进行解密,但有一些工具。

因此,您应该做的是在用户注册时转换密码(假设您可以在系统中添加用户),然后将转换后的值作为字符串(varchar 或文本)存储在数据库中。然后,当您想再次使用相同的方法登录时,将结果与数据库中的任何密码进行比较。这些世代不是随机的,因此如果您输入“123”,则生成的哈希每次都会相同。

【讨论】:

  • 这正是我问这个问题时的意思!我只是无法弄清楚如何做到这一点的逻辑。非常感谢。
  • 另请注意,MD5 已被广泛认为是不安全的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-14
  • 2011-07-25
  • 2019-09-01
  • 2019-01-21
  • 1970-01-01
相关资源
最近更新 更多