我需要哈希密码以存储在数据库中.我怎么能用Java做到这一点?
我希望获取纯文本密码,添加随机盐,然后将salt和散列密码存储在数据库中.
然后,当用户想要登录时,我可以获取他们提交的密码,从他们的帐户信息中添加随机盐,哈希并查看它是否等于存储的哈希密码及其帐户信息.
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class JavaMD5 {
public static void main(String[] args) {
String passwordToHash = "MyPassword123";
String generatedPassword = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(passwordToHash.getBytes());
byte[] bytes = md.digest();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
}
generatedPassword = sb.toString();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(generatedPassword);
}
}
Run Code Online (Sandbox Code Playgroud)
这一行是问题所在:
sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1)); …Run Code Online (Sandbox Code Playgroud)