2013-02-11 43 views
0

我正在使用MessageDigest类来使用SHA1或MD5获取字符串的散列。下面是一个使用MD5散列算法总是在末尾返回 r n

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

我强烈怀疑这是'encodeBuffer'调用。这是'sun.misc.Base64Encoder'吗?我个人使用的Base64代码在http://iharder.net/base64 – 2013-02-11 09:03:02

+0

是的,我使用sun.misc ... – ayush 2013-02-11 09:54:27

回答

1

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

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