【发布时间】:2016-07-26 22:07:15
【问题描述】:
我想知道为什么我的字符串在 md5 传输后,输出 sth 包含许多不可读的字符,例如? 。ETC。在这种情况下,下面的代码输出 ��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");
}
}
}
【问题讨论】:
-
MessageDigest.digest返回一个byte[];您正在尝试将其转换为String,这在逻辑上是char[]。char和byte不是一回事。如果要将其打印为可读字符串,请使用 base64 对字节进行编码(或将字节打印为十六进制)。
标签: java hash md5 decode encode