Java 来自SUN的MD5消息摘要,<;进行中>;
我尝试使用Java获取MD5字符串,但下面的函数返回字符串Java 来自SUN的MD5消息摘要,<;进行中>;,java,ubuntu,md5,openjdk,xubuntu,Java,Ubuntu,Md5,Openjdk,Xubuntu,我尝试使用Java获取MD5字符串,但下面的函数返回字符串“来自SUN的MD5消息摘要”,: 我在Xubuntu上使用OpenJDK。为什么我会收到这个信息?有没有办法使用此设置获取MD5哈希?一个选项是使用。检查一下 我找到了有效的解决方案 public String byteToHexString(byte[] input) { String output = ""; for (int i=0; i<input.length; ++i) { output
“来自SUN的MD5消息摘要”,
:
我在Xubuntu上使用OpenJDK。为什么我会收到这个信息?有没有办法使用此设置获取MD5哈希?一个选项是使用。检查一下
我找到了有效的解决方案
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;
}
}
公共字符串byteToHexString(字节[]输入){
字符串输出=”;
对于(int i=0;i什么消息?您的问题不清楚。请添加错误消息哦,不要在字节数组上调用toString
。真是个坏主意。@JonSkeet来自question@jcubic:是的,但字节数组是摘要。这是有用的信息位。那么您希望如何将其转换为字符串?是否希望十六进制表示法?Base64?还有别的吗?
String value = "YourValue";
System.out.println(DigestUtils.md5Hex( value ));
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;
}
}