DigestUtils调用md5Hex对用一个输入流连续加密返回不同md5码

本文探讨了使用DigestUtils的md5Hex方法对输入流进行连续加密时,为何每次加密结果不同的问题。作者通过查看源码发现,第一次加密后,输入流被读取完毕,导致后续加密操作基于空的输入流,从而得到相同的MD5码。这个问题在其他场景中也可能出现,例如多次调用MD5加密API时。
摘要由CSDN通过智能技术生成

    关于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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值