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;
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一直在跳坑然后爬坑

RxJava2操作符之“Skip”

Skip操作符可以说是上一篇Take操作符的兄弟 suppress the first n items emitted by an Observable 去...

953
来自专栏码神联盟

Shiro系列 | 《Shiro开发详细教程》第五章:Shiro编码加密

在涉及到密码存储问题上,应该加密或者生成密码摘要存储,而不是存储明文密码。为避免数据泄露对用户造成很大的损失,应该加密或者生成不可逆的摘要方式存储。

892
来自专栏小鄧子的技术博客专栏

【译】对RxJava中.repeatWhen()和.retryWhen()操作符的思考

第一次见到.repeatWhen()和.retryWhen()这两个操作符的时候就非常困惑了。不得不说,它们绝对是“最令人困惑弹珠图”的有力角逐者。

1142
来自专栏编程之旅

iOS开发——32位MD5加密

在IOS开发过程中,为了保证数据的安全,我们通常要采取一些加密方法,常见的加密有Base64加密和MD5加密。Base64加密是可逆的,MD5加密目前来说一般是...

1252
来自专栏刘君君

很方便的密码加密算法BCrypt

1.7K5
来自专栏蘑菇先生的技术笔记

qt5中信号和槽的新语法

2947
来自专栏用户画像

Ping++ 支付接口对接

1081
来自专栏小樱的经验随笔

凯撒密码加解密及破解实现原理

概念及原理 根据百度百科上的解释,凯撒密码是一种古老的加密算法。 密码的使用最早可以追溯到古罗马时期,《高卢战记》有描述恺撒曾经使用密码来传递信息,即所谓的“恺...

3526
来自专栏QQ音乐技术团队的专栏

RxJava的一些入门学习分享

最近在Android编程领域,RxJava这个框架的技术热度相当的高。团队对使用RxJava改进目前的项目代码也表示很有兴趣,所以我特地和团队伙伴一起对这套框...

32610
来自专栏Hongten

lucene对日期(date)和整形(int)处理

==========================================

1053

扫码关注云+社区

领取腾讯云代金券