0

我正在使用 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?

4

1 回答 1

1

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

显然Base64 编码器提供了线路终结器。否则它将对其进行编码。

于 2013-02-11T09:08:12.193 回答