2013-02-11 88 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編碼器提供線路終結器。否則,它會編碼它。