Java 来自SUN的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

我尝试使用Java获取MD5字符串,但下面的函数返回字符串
“来自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;
    }
}