问题描述
我实现了以下逻辑,将用户普通密码编码为 sha512 哈希值。
public static String getSha512Password(String rawPass,String salt){
String saltedPass = mergePasswordAndSalt(rawPass,salt);
MessageDigest messageDigest = getMessageDigest();
byte[] digest;
try {
digest = messageDigest.digest(saltedPass.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException("UTF-8 not supported!");
}
digest = messageDigest.digest(digest);
return new String(Hex.encode(digest));
}
protected final static MessageDigest getMessageDigest() throws IllegalArgumentException {
try {
return MessageDigest.getInstance("SHA-512");
} catch (NoSuchAlgorithmException e) {
throw new IllegalArgumentException("No such algorithm [" + algorithm + "]");
}
}
protected static String mergePasswordAndSalt(String password,String salt) {
if (password == null) {
password = "";
}
if ((salt == null) || "".equals(salt)) {
return password;
} else {
return password + "{" + salt.toString() + "}";
}
}
我也用过MysqL
sha2(密码,512)
MysqL sha2 函数的返回值和 java getSha512Password 是两个不同的值。。我希望它们相同。
我想知道如何更新java encode方法使返回值与MysqL sha2函数相同。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)