关于org.apache.commons.codec.digest.DigestUtils的这个类,对一个输入流连续的进行两次加密,输出的MD5码不同,如果多次连续加密,则除过第一次得到的MD5码都一致
前一段儿时间在公司写接口的项目,webservice的那种,中途碰到一个问题。具体情况是别的公司调用我们的接口上传一些数据,其中设计到MD5码加密的问题,传过来文件及MD5码,然后我们去校验是否一致(此处有个疑问就是别人可能改文件也可能改MD5码的哇,到现在也没相通为啥要多这一步,,,当然了,这都是扯淡,跟本次问题没啥关系,继续说)。刚开始一切正常,突然有一天一家保险公司的人跟我们反馈MD5码校验一直不通过,问我们是否是用同一个工具去进行MD5码加密的。查过程序没有问题以后,我将报文以及加密后的MD5码要了过来,自己编写了一个测试类测试了一下。
package com.yl;
import java.io.File;
import java.io.FileInputStream;
import org.apache.commons.codec.digest.DigestUtils;
/**
* MD5码创建测试类
* @author 杨力
*
*/
public class Test {
/**
*
* @param args
* @throws Exception
* @author 杨力
*/
public static void main(String[] args) throws Exception{
//从本地c盘读入一个文件流
FileInputStream fileInputStream = new FileInputStream(new File("C:/My