JDK环境导致MD5算法不一致问题

今天在跟第三方做接口联调,在验签时遇到一个问题,明明两边的加密算法一模一样,但是加密后却不一样。

加密算如下:

import java.security.MessageDigest;

/**
 * @Author shenxy
 * @Date 2023/2/27 20:30
 * @Version 1.0
 */
public class SignUtil {
    public static String TOKEN = "35D0E315D6A046ADB7FD20CABE7BDB75";

    public static String getSignText(String body, String time) {
        String srcText = "token=" + TOKEN + "&time=" + time + "&body=" + body;
        String signText = getMd5(srcText);
        System.out.println("客户端【数据加密验证】原始文本:" + srcText + " 加密后:" + signText);
        return signText;
    }


    /**
     * Md5加密
     * @param s
     * @return
     */
    public static String getMd5(String s) {
        char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
        try {
            byte[] strTemp = s.getBytes();
            MessageDigest mdTemp = MessageDigest.getInstance("MD5");
            mdTemp.update(strTemp);
            byte[] md = mdTemp.digest();
            int j = md.length;
            char str[] = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++) {
                byte byte0 = md[i];
                str[k++] = hexDigits[byte0 >>> 4 & 0xf];
                str[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(str);
        } catch (Exception e) {
            return null;
        }
    }
}

后来通过getBytes设置编码格式解决了该问题。

未设置编码时

图片[1]-JDK环境导致MD5算法不一致问题-深吸氧
图片[2]-JDK环境导致MD5算法不一致问题-深吸氧

设置编码时

图片[3]-JDK环境导致MD5算法不一致问题-深吸氧
图片[4]-JDK环境导致MD5算法不一致问题-深吸氧
© 版权声明
THE END
请撒泡尿证明你到此一游
点赞1 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容