md5校验问题

描述:

最近跟同事做数据对接,接收完数据,有个md5校验,发现总是对不上

首先把解密之后的明文直接写成变量在md5的工具类main函数执行,发现居然对上了,

然后测试环境debug接收的文件,md5加密后发现又不一样了

解决过程:

1)确定明文的字符串是否是同一个,经测试是一个字符串

2)难道md5这边出问题了,所有的现象都指向md5加密算法,即测工具类的main函数执行和运行时的环境出现了不一致。

3)查看这个加密方法(spring包中的)DigestUtils.md5DigestAsHex(input.getBytes()),发现传入的是byte数组,这个就有问题了,input.getBytes()这个的解释说采用默认的编码,如果我在eclipse下执行的话肯定是我自己的utf-8,如果发布到其它地方这个编码就保证不了,我的机器是win系统,那应该是gbk,测试一下果然是这个问题

4)最后定义了2个加密方法,其中一个方法多加了一个字符编码的选项,ok,解决了!

原文地址:https://www.cnblogs.com/aishangyizhihu/p/4631144.html