Java 中密码的 MD5 消息摘要的实现

Implimentation for MD5 Message Digest for Passwords in Java

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

欢迎来到 SO。我想已经有人回答了与您类似的 post,但我会告诉您我是如何解决它的。

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”,每次生成的哈希值都将相同。