我想獲得字符串"password"
的MD5散列。消息摘要散列MD5
當我使用從Spring框架MD5PasswordEncoder
類我得到這個:
5f4dcc3b5aa765d61d8327deb882cf99
但是,當我使用Java的MessageDigest
類MD5我得到這個:
9577-525990-89101-4229-12539-34-72-126-49-103
第一個是十六進制,另一個是十進制。爲什麼有差異?這裏是代碼:
public static void main(String[] args) {
PasswordEncoder pEncoder = new Md5PasswordEncoder();
System.out.println(pEncoder.encodePassword("password", null));
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update("password".getBytes("UTF-8"));
byte [] digest = md.digest();
StringBuffer sb = new StringBuffer();
for (byte b : digest) {
sb.append(b);
}
System.out.println(sb.toString());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我想你錯過了添加一個問題。如果問題是他們爲什麼不同,我的答案是:你讀過這兩個類的文檔嗎? – Augusto 2013-03-05 08:37:18
除了值非常不同之外,還有什麼問題? – 2013-03-05 08:37:23
是的問題是他們爲什麼不同。 – George 2013-03-05 08:42:04