天天看點

校驗兩個檔案是否一樣(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碼比對兩個檔案是否一樣