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

时间:2015-10-08 17:13:00

标签: java md5

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

1 个答案:

答案 0 :(得分:0)

欢迎来到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或text)存储在数据库中。然后,当您要登录时再次使用相同的方法,然后将结果与数据库中的任何密码进行比较。这些世代并不是随机的,所以如果你进入类似的" 123"生成的哈希每次都是相同的。