我尝试使用Java获取MD5字符串,但下面的函数返回字符串"MD5 Message Digest from SUN, <in progress>"
:
public String hash(String value) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(value.getBytes("UTF-8"));
return md.toString();
} catch (NoSuchAlgorithmException e) {
return null;
} catch (UnsupportedEncodingException e) {
return null;
}
}
我在Xubuntu上使用OpenJDK。为什么我收到这条消息?有没有办法使用此设置获取MD5哈希?
答案 0 :(得分:0)
一种选择是使用commons-codec.jar。查看API。
String value = "YourValue";
System.out.println(DigestUtils.md5Hex( value ));
答案 1 :(得分:0)
我找到了有效的解决方案,
public String byteToHexString(byte[] input) {
String output = "";
for (int i=0; i<input.length; ++i) {
output += String.format("%02X", input[i]);
}
return output;
}
public String hash(String value) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
return byteToHexString(md.digest(value.getBytes("UTF-8")));
} catch (NoSuchAlgorithmException e) {
return null;
} catch (UnsupportedEncodingException e) {
return null;
}
}