我想知道为什么我的字符串在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");
}
}
}
答案 0 :(得分:2)
MD5摘要功能的输出是二进制字节序列,而不是可打印的字符串。
无法打印原始MD5摘要。
如果要打印摘要的人类可读表示,则应将其打印为十六进制或BASE64编码的字符串。