問題說明:今天在作java接口的時候,遇到一個麻煩問題,浪費我半個下午,也就是MD5加密問題,用戶信息是由一個微博系統拿到的,這個微博系統是php開發的,密碼使用的是php的MD5 加密方式。與java的MD5是有點不一樣的,因此就出現加密結果不同的狀況。 php
問題解決代碼以下: java
public String md5(String txt) {
try{
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(txt.getBytes("GBK")); //問題主要出在這裏,Java的字符串是unicode編碼,不受源碼文件的編碼影響;而PHP的編碼是和源碼文件的編碼一致,受源碼編碼影響。
StringBuffer buf=new StringBuffer();
for(byte b:md.digest()){
buf.append(String.format("%02x", b&0xff));
}
return buf.toString();
}catch( Exception e ){
e.printStackTrace(); app
return null;
}
} 編碼