我正在使用以下代码来散列传入的字符串,期望多次应用于该方法的相同的东西总是会得到相同的结果。该场景将用于密码散列和稍后验证。但它似乎并不奏效 - 我为同一个输入字符串得到了两个不同的blob。我的代码有什么不对吗?SHA将相同的字符串散列到不同的块中
public synchronized String encrypt(String token) {
try {
MessageDigest sha = MessageDigest.getInstance("SHA");
sha.reset();
sha.update(token.getBytes("UTF-8"));
byte[] raw = sha.digest();
System.out.println("raw = " + raw.toString());
String hash = Base64.encodeBase64(raw).toString();
return hash;
} catch (Exception e) {
}
return token;
}
添加相关语言的标签。我相信你忘了添加'Java'。 – 2012-01-04 18:01:55
谢谢,补充一下。 – tom 2012-01-04 18:03:14
SHA是** NOT **加密。 – Dan 2012-01-04 18:04:28