MD5加密结果在不同的环境下出现不一致

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

今天项目中遇到调一接口 验证 sign  怎么验证 都不多。检查 发现 相同的内容 两次MD5 结果不一样。

把包打开 检查了一下 MD5 算法。一看才知道,写这个代码的人 没有 指定字符集

public class MD5Digest {


     private static MessageDigest md5=null;


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

         if(null == md5) {

             md5=MessageDigest.getInstance("MD5");

         }

         byte[] byteArray=null;

         byteArray=msg.getBytes();  

         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"); 



转载于:https://my.oschina.net/u/1262235/blog/425713

你可能感兴趣的:(MD5加密结果在不同的环境下出现不一致)