java與php的md5互通

愛在哈佛發表於2017-03-23
其實md5這個演算法和語言沒有什麼關係,很多同學在使用不同語言開發的時候,使用md5演算法得出的結果會不一樣,比如java與php,其實很多時候是由於受到原始碼檔案的影響,比如你java的字串編碼是unicode,不受原始碼檔案影響,而php的編碼是和原始檔編碼一致的,受原始碼編碼影響。在做下記錄
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(); 

                   return null;
                } 
        }

 


相關文章