我已经创建了MD5 hash.Its现在工作正常。我希望输出16个字符。当前代码返回32个字符。
这是我的代码:
try {
String text = "Hello World";
MessageDigest msg = MessageDigest.getInstance("MD5");
msg.update(text.getBytes(), 0, text.length());
String digest1 = new BigInteger(1, msg.digest()).toString(16);
System.out.println("MD5: " + digest1.length());
System.out.println("MD5: " + digest1);
} catch (NoSuchAlgorithmException ex) {
Logger.getLogger(AndroidActivationView.class.getName()).log(Level.SEVERE, null, ex);
}
我想改变的地方。
如何获得16个字符的输出。?
提前致谢;
答案 0 :(得分:6)
将字符串剪切为长度:digest1 = digest1.substring(0, 16);
MD5输出16个字节。如果用十六进制编码,则为32个字符。如果你用base-64编码它是24个字符。 Base-85会将其挤压成20个字符。没有众所周知的编码,即每个字节一个字符。