我不理解“字节模式”中的示例:
// hash
//
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] digest = md.digest(Bytes.toBytes(s));
System.out.println("md5 digest bytes length: " + digest.length); // returns 16
String sDigest = new String(digest);
byte[] sbDigest = Bytes.toBytes(sDigest);
System.out.println("md5 digest as string length: " + sbDigest.length); // returns 26
为什么sbDigent.length!=摘要长度?
谢谢
答案 0 :(得分:0)
“ sbDigest”为0xEFBFBD07EFBFBDEFBFBDEFBFBD2D132FEFBFBDEFBFBD18EFBFBD6738EFBFBDEFBFBD,34个字节,因此其长度为34(不是26 )。
根本原因是java.lang.String的构造函数:
公共字符串(字节[]字节)
通过使用以下命令解码指定的字节数组来构造新的String 平台的默认字符集。新字符串的长度为 字符集的功能, 因此可能不等于长度 字节数组 。