md5输出问号字符

时间:2016-07-26 22:07:16

标签: java hash md5 decode encode

我想知道为什么我的字符串在md5之后传输,输出某些包含许多不可读的字符,比如? 。等等。在这种情况下,下面的代码输出 kh{ j p% 。

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;



public class Test{
    public static void main(String args[]){


        try{
            MessageDigest md = MessageDigest.getInstance("MD5");
            String ssmd5 = "sp00";
            String ShipmentID = new String(md.digest(ssmd5.getBytes()), StandardCharsets.UTF_8);
            System.out.println(ShipmentID);

        }catch(NoSuchAlgorithmException e){
            System.out.println("I'm sorry, but MD5 is not a valid message digest algorithm");
        }



    }
}

1 个答案:

答案 0 :(得分:2)

MD5摘要功能的输出是二进制字节序列,而不是可打印的字符串。

无法打印原始MD5摘要。

如果要打印摘要的人类可读表示,则应将其打印为十六进制或BASE64编码的字符串。

请参阅:How to convert a byte array to a hex string in Java?