散列算法总是返回\ r \ n

时间:2013-02-11 09:00:49

标签: java hash base64 md5 sha1

我正在使用MessageDigest类来使用SHA1或MD5获取字符串的哈希值。以下是使用MD5的示例代码

private static String applyHashToKey(String key){
        byte[] hashkey = null;
        MessageDigest md = null;
        try {
            md = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            hashkey = md.digest(new BASE64Decoder().decodeBuffer(key));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String result = new BASE64Encoder().encodeBuffer(hashkey);
        return result;
    }

现在我注意到我要么使用SHA1,要么使用MD5 哈希字符串,我从该函数返回的字符串最终总是有一个\ r \ n。

例如:Y60SedKVyEkKH4LKdikpc + zu5 + 0 = \ r \ n

了解发生了什么。这样可以,或者我做错了什么并介绍\ r \ n我自己?

1 个答案:

答案 0 :(得分:1)

  

现在我注意到,无论是使用SHA1还是使用MD5,我从该函数返回的哈希字符串最终总是有一个\ r \ n。

显然 Base64编码器正在提供线路终结器。否则它会编码。