zoukankan      html  css  js  c++  java
  • md5加密,同样的代码得到不同的加密结果(已解决)

      场景:

      开发环境(windows下)调用第三方接口验签通过,发测试环境(linux下)后死活验签通过不了

      原因:

      md5是一项成熟的加密技术,问题应该在代码里,查了查感觉可能是字符编码的问题,导致加签没通过,这样的话只能是环境导致的字符编码出现问题,就我所知的有getBytes()方法是得到一个操作系统默认的编码格式的字节数组,发现公共代码里进行md5加密是要进行转字节的

        /**
         * md5加密
         */
        public static String MD5Encode(String origin) {
            String resultString = null;
            try {
                resultString = new String(origin);
                MessageDigest md = MessageDigest.getInstance("MD5");
                resultString = byteArrayToHexString(md.digest(resultString
                    .getBytes()));
            } catch (NoSuchAlgorithmException e) {
            }
            return resultString;
        }

      所以这里的getBytes()不确定性太大,需要指定编码方式来降低耦合(代码与环境的耦合)。

      解决方法:

      将getBytes()方法指定具体的编码方式,如:getBytes("UTF-8")

        /**
         * md5加密
         */
        public static String MD5Encode(String origin) {
            String resultString = null;
            try {
                resultString = new String(origin);
                MessageDigest md = MessageDigest.getInstance("MD5");
                resultString = byteArrayToHexString(md.digest(resultString
                    .getBytes("UTF-8")));
            } catch (NoSuchAlgorithmException e) {
            }
            return resultString;
        }

      

  • 相关阅读:
    Mahout推荐算法ItemBased
    ALSA安装编程指南
    windbg更改cmd的token提升其特权
    至尊问题
    什么是“Bash”破绽?
    hdu 1548 A strange lift
    C 循环链表
    C++ 链表
    C_数据结构_链表的链式实现
    C _数据结构 _线性表的顺序存储
  • 原文地址:https://www.cnblogs.com/lfalex0831/p/9771567.html
Copyright © 2011-2022 走看看