散列算法总是在末尾返回\ r \ n
问题描述:
我正在使用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本人?
答
现在我注意到,无论是使用SHA1还是使用MD5,我从该函数返回的哈希字符串总是有\ r \ n。
显然 Base64编码器提供线路终结器。否则,它会编码它。
我强烈怀疑这是'encodeBuffer'调用。这是'sun.misc.Base64Encoder'吗?我个人使用的Base64代码在http://iharder.net/base64 – 2013-02-11 09:03:02
是的,我使用sun.misc ... – ayush 2013-02-11 09:54:27