-1
我想知道为什么我的字符串在md5传输后输出......包含许多不可读的字符,比如? 。等等。在这种情况下,下面的代码输出 kh{ j p% 。md5输出问号字符
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将对字节进行编码(或将字节以十六进制打印)。 –