MD5加密結果在不一樣的環境下出現不一致

今天項目中遇到調一接口 驗證 sign  怎麼驗證 都很少。檢查 發現 相同的內容 兩次MD5 結果不同。算法

把包打開 檢查了一下 MD5 算法。一看才知道,寫這個代碼的人 沒有 指定字符集app

public class MD5Digest {編碼


     private static MessageDigest md5=null;接口


     public static String getDigest(String msg) throws UnsupportedEncodingException, NoSuchAlgorithmException {md5

         if(null == md5) {get

             md5=MessageDigest.getInstance("MD5");it

         }io

         byte[] byteArray=null;字符編碼

         byteArray=msg.getBytes();  class

         byte[] md5Bytes=md5.digest(byteArray);

         StringBuffer hexValue=new StringBuffer();

         for(int i=0; i < md5Bytes.length; i++) {

             int val=((int)md5Bytes[i]) & 0xff;

             if(val < 16)

                 hexValue.append("0");

             hexValue.append(Integer.toHexString(val));

         }

         return hexValue.toString();

     }


byteArray=msg.getBytes();  

在不一樣的環境下得到的結果多是不同的,這樣也形成不少MD5結果不同。


保證在不一樣環境下MD5結果相同那麼必須使用相同的字符編碼,好比:byteArray=msg.getBytes("UTF-8"); 

相關文章
相關標籤/搜索