我们为学校项目制作了一个系统,我们的教授告诉我们不要在数据库中以明文形式存储密码。她希望我们加密这些密码以确保安全,因为我们的系统将处理大量机密数据。所以我们决定使用MD5来制作密码的哈希问题,我真的不知道如何在登录过程中实现密码。
答案 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"生成的哈希每次都是相同的。