在Java -Output 16字符中生成MD5哈希

时间:2011-12-14 04:39:23

标签: java

我已经创建了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个字符的输出。?

提前致谢;

1 个答案:

答案 0 :(得分:6)

将字符串剪切为长度:digest1 = digest1.substring(0, 16);

MD5输出16个字节。如果用十六进制编码,则为32个字符。如果你用base-64编码它是24个字符。 Base-85会将其挤压成20个字符。没有众所周知的编码,即每个字节一个字符。