昨天联调某接口时发现一个的Bug,还好很快找到原因并紧急修复了。
某文件A.tar.gz使用apache commons-compress计算的MD5值:
FileReader fr= new FileReader(tarFile);
String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fr));
IOUtils.closeQuietly(fr);
System.out.println("MD5:"+md5);
与使用命令:
md5sum A.tar.gz
后显示的MD5值竟然不一样。
话说当时还真就奇怪了,难道commons compress有Bug?
其实不然。
问题是出在了FileReader上:Reader是按字符读取文件,而InputStream是按字节读取文件。此处是压缩文件而不是文本文件,使用Reader读取后计算的MD5值是错误的。改成这样:
FileInputStream fis= new FileInputStream(tarFile);
String md5 = DigestUtils.md5Hex(IOUtils.toByteArray(fis));
IOUtils.closeQuietly(fis);
System.out.println("MD5:"+md5);
这样再和md5sum做比较,发现结果就完全相同了。
希望对大家有所帮助。
分享到:
相关推荐
`MD5KeyGen`是一个基于VC++的小程序,它的主要功能是计算文件的MD5值。在Windows环境下,开发者可能经常需要对文件进行MD5校验,比如在下载大文件后确认其完整性,或者在比较两个文件是否完全相同时。`MD5KeyGen`...
"文件MD5碰撞工具"是一个专门用于处理MD5值的应用程序,它可以读取文件的MD5哈希值并显示出来。MD5哈希值的读取是通过对文件内容进行MD5算法计算得到的,这个过程是单向的,即从文件到哈希值,无法直接反推回原始...
相信很多做视频剪辑的小伙伴都有遇过以下情况,就是辛辛苦苦剪辑了一个视频,上传到平台后却发现过不了审并显示该视频是搬运的情况,你知道为什么会出现这种情况吗?其实这是因为你的视频md5数值和平台已有的md5...
MD5计算的实现通常需要包含一个MD5库,例如OpenSSL库中的MD5函数。开发者可以将这个库移植到STM32F429项目中,确保无论通过何种方式(如串口或网络)接收固件,都可以进行有效的校验。 在实际应用中,为了确保系统...
"bug 定义和返工率计算统计方法" 本资源摘要信息主要介绍了 bug 的定义、返工率计算统计方法以及与之相关的质量提高方案。 首先,文档对 bug 的定义进行了详细的描述。bug 定义是指在软件开发过程中出现的错误或...
自己写的用来计算和比对文件或字符串的小工具,测试不是很严格,有BUG欢迎大家提.
自己用python写的一个小程序,用来修改文件夹内所有视频的md5值的,速度快,自动搜索视频文件,其他文件不做修改。 有需要的朋友可以自取,作用就是修改了md5的视频文件上传到网盘不能秒传,但是也不会因为别人的...
这是一款用来计算和校验文件MD5值的小工具。 它可以对一段文字信息计算出一串独特数值,这样可以发现这段信息是否被他人篡改过;它还可以通过对比MD5值来效验下载后的文件是否与网络上原版的文件完全一致,以防软件...
单机版可能允许用户计算本地文件的MD5值,而在线版则可能连接到一个数据库,可能包含已知的MD5值,用于比对和查找特定的MD5摘要,这在一定程度上类似于MD5查重服务。 文件列表中的"md5在线.exe"和"md5牙牙.exe"可能...
计算机Bug的概念及其相关术语“debugging”的诞生,不仅是计算机科学历史上的一个小插曲,更是技术进步的一个缩影。通过这个故事,我们可以看到技术发展过程中偶然性和创新精神的重要性。格蕾丝·赫珀的故事提醒着...
标题中的“_28-_md5_源码”暗示了这是一个关于MD5哈希算法的源代码项目,可能包含了用于计算MD5值的程序或库。MD5(Message-Digest Algorithm 5)是一种广泛使用的加密散列函数,产生一个128位(16字节)的散列值,...
描述中提到的"修正CaculateStr函数BUG,可以处理大于56个字符的字符串",这可能是指在原始版本的`CaculateStr`函数中存在一个限制,无法正确处理超过56个字符的字符串进行MD5计算的问题。MD5算法本身并不限制输入...
MD5(Message-Digest Algorithm 5)是一种被广泛使用的密码散列函数,它可以将任意长度的数据转换为固定长度(128位)的散列值,通常用一个32位的十六进制字符串表示。在安全性日益重要的今天,MD5已不推荐用于密码...
举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一...
校验大师是一款免费、快速、小巧易用的对文件进行MD4,MD5,Haval256,RipeMD128,RipeMD160,SHA1,SHA256,SHA384,SHA512,Tiger192等值验证、计算的软件,可快速验证文件的MD5,CRC32等值,确保它们没有被更改过...
1. **MD5哈希计算**:MD5算法将文件内容转化为32位的十六进制字符串,如果文件内容有任何改变,其MD5值就会完全不同,因此可以用来判断文件是否被篡改。 2. **多线程技术**:多线程是指在一个进程中同时执行多个...
1. **MD5计算函数**:一个核心的函数,接收任意长度的字符串或二进制数据作为输入,返回一个32位的十六进制字符串,即MD5哈希值。 2. **API接口**:为了方便使用,库通常会提供易于理解和调用的API接口,可能包括...
自己写的文件 MD5 查看器,第三版,修正了前两个版本的一些BUG,加入了进度条,在校验比较大的文件的时候,可以看到进度,可以最小化到系统托盘,计算完毕后,自动提示,可以通过网络对自身进行校验,防止被其他程序...
在JavaScript中,浮点数(小数)的计算可能会出现一些看似奇怪的结果,这主要是由于计算机内部表示浮点数的方式导致的...在实际开发中,需要根据具体需求选择合适的方法来处理浮点数计算,以避免因精度问题引发的bug。
软件Bug引发的十次严重后果,值得大家一看,强烈推荐。