天天看点

校验两个文件是否一样(MD5方式:windows,linux,自定义java代码三种方式)——亲测成功

1.MD5简述

MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的“指纹”(或称“报文摘要”),不同的文件产生相同的报文摘要的可能性是非常非常之小的(题外:那就可能会存在)。

2.校验方法

widow亲测成功(加空行,校验不同)

linux–亲测成功

java–亲测成功

2.1windows下

在cmd下进入 要查看的文件目录, 然后输入命令

certutil -hashfile  文件名称.文件类型 MD5

如

certutil -hashfile  webpro.war MD5
           

注意后面有个MD5,不然会生成一个其他的值。

2.2.linux下

md5sum 文件名
           

2.3自定义java法

package com.lifeng;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
/**
 * 获取文件的md5值,从而比对两个文件是否相等
* @Description: TODO
* @author lifeng
* @date 2016年3月1日 上午9:34:15 
* @version V1.0
 */
public class MD5 {
	public static String getFileMD5(String filePath) throws Exception{
		File file = new File(filePath);
		InputStream in = new FileInputStream(file);
		MessageDigest digest = MessageDigest.getInstance("MD5");  ;
		byte buffer[] = new byte[1024];
		int len;
		while((len = in.read(buffer))!=-1){
			digest.update(buffer, 0, len);
		}
		BigInteger bigInt = new BigInteger(1, digest.digest()); 
		return bigInt.toString(16);
	}
	
	public static void main(String[] args) throws Throwable{
		String f1 = getFileMD5("E://1.tmp");
		String f2 = getFileMD5("E://2.tmp");
		System.out.println(f1.equals(f2)+"=="+f1);
	}
}
           

2.4 校验软件(略)

参考:

windows下查看文件md5值

linux比较两个文件是否一样(linux命令md5sum使用方法)

shell脚本如何实现将两个war包进行对比

通过文件的md5码比对两个文件是否一样