`
Mark_Ly
  • 浏览: 3132 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

java md5 check tool

阅读更多

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.commons.lang.StringUtils;

public class FileHashCompleteCheck {
	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args){
			System.out.println(" Please Input CPU Count:");
			BufferedReader   br   =   new  BufferedReader(new  InputStreamReader(System.in)); 
            String str;
			try {
				str = br.readLine();
				int cpuCount = Integer.parseInt(str);
				System.out.println(" Please Input To Check File Path:");
				br   =   new  BufferedReader(new  InputStreamReader(System.in)); 
				str = br.readLine();
				String filePath = str;
		    	String code = new FileHashCompleteCheck().getFileCheckCode(new File(filePath),cpuCount);
		    	System.out.println(" code = " + code);
			}catch(NumberFormatException e){
				System.out.println(" CPU Count Must Number!");
			}catch(FileNotFoundException e){
				System.out.println(" File Not Found!");
			}catch (IOException e) {
				System.out.println(" System Error!");
			} 
	}

	private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5",
			"6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };

	private MessageDigest msgDigest = null;
	private final int blockSize = 1024;

	public FileHashCompleteCheck() {
		try {
			msgDigest = MessageDigest.getInstance("MD5");
		} catch (NoSuchAlgorithmException nsae) {
			System.out.println(" error: "+nsae.getMessage());
		}
	}

	/**
	 * 比对文件校验码
	 * @param file 要比对的文件
	 * @param checkCode 要比对的文件的校验码
	 * @return 比对结果
	 * @throws IOException
	 */
	public boolean checkFileComplete(File file,String checkCode,int checkRnage)throws IOException {
		return StringUtils.equals(getFileCheckCode(file,checkRnage), checkCode);
	}

	/**
	 * 生成文件校验码
	 * 
	 * @param file 要校验的文件
	 * @param fileCheckRnage 控制校验速度,基本CPU个数
	 * @return 校验码
	 * @throws IOException
	 */
	public String getFileCheckCode(File file,int fileCheckRnage) throws IOException {
		String fileCheckCode = null;
		FileInputStream instream = null;
		if (!file.isDirectory()) {
			try {
				instream = new FileInputStream(file);
				msgDigest.reset();
				int read;
				byte[] buf = new byte[blockSize];
				for (int i = 0; (read = instream.read(buf)) != -1; i++) {
					msgDigest.update(buf, 0, read);
					if (i % (1024 * 1024 * fileCheckRnage) == 0) {
						try {
							Thread.sleep(10);
						} catch (Exception e) {
							System.out.println(" md5 check fail = "+e.getMessage());
							continue;
						}
					}
				}
			} finally {
				if (instream != null) {
					instream.close();
				}
			}
			fileCheckCode = new String(byteArrayToHexString(msgDigest.digest()));
		}
		return fileCheckCode;
	}

	/**
	 * 生成十六进制码
	 * 
	 * @param b
	 * @return String
	 */
	private String byteArrayToHexString(byte[] b) {
		StringBuffer resultSb = new StringBuffer();

		for (int i = 0; i < b.length; i++) {
			resultSb.append(byteToHexString(b[i]));
		}
		return resultSb.toString();
	}

	/**
	 * 将byte转换成相应的十六进制符
	 * 
	 * @param b
	 * @return String
	 */
	private String byteToHexString(byte b) {
		int n = b;

		if (n < 0) {
			n = 256 + n;
		}
		int d1 = n / 16;
		int d2 = n % 16;
		return hexDigits[d1] + hexDigits[d2];
	}

	/**
	 * 返回要使用的校验方式
	 * 
	 * @return MessageDigest
	 */
	public MessageDigest getMessageDigest() {
		return msgDigest;
	}

}
 
分享到:
评论

相关推荐

    Md5Check.rar

    MD5Check是一个与MD5校验相关的工具或程序,它很可能用于验证文件的完整性和真实性。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能将任意长度的数据转化为固定长度的摘要信息,通常是一个128位...

    校验和计算工具CheckTool

    1. **多格式支持**:CheckTool支持多种校验和算法,包括但不限于MD5、SHA-1、SHA-256等,用户可以根据需求选择合适的算法。 2. **批量处理**:除了计算单个文件的校验和,CheckTool还允许用户一次性处理多个文件或...

    MD5校验工具两个MD5_Check

    1. 获取目标文件的MD5值:使用MD5 Check或SUN_MD5Check这样的工具计算文件的MD5摘要。 2. 记录或获取官方的MD5值:这通常可以在文件的下载页面或者随文件一起提供的文本文件中找到。 3. 比对MD5值:将计算得到的MD5...

    Md5Check 检验任何文件的MD5值

    Windows MD5 Check,她可以检验任何文件(可执行程序,图形图像文件,文本文件,压缩文件,二进制文件,刻录文件,未下载完全的临时文件......)的MD5值,准确无误!比如在拷贝一个文件的时候,不妨用她先来做个检验,得到一个值,...

    MD5 Checksum Tool v4.1

    NoVirusThanks MD5 Checksum Tool is a free and easy to use application designed to allow users to generate the file checksum (MD5/SHA1 hash) of a file or string. It can be very useful to check if an ...

    md5check md5 校验工具带源码

    `md5check`是一款基于MD5算法的校验工具,用于检查文件的MD5值是否与预知的MD5值一致,以确认文件在传输或存储过程中是否被篡改。它包含了两个文件:`Md5Check.exe`是可执行程序,可以直接运行进行MD5校验;`source`...

    MD5 Check MD5检测工具

    MD5 Check是一款用于验证文件完整性的实用工具,它利用了MD5散列算法来检查文件的完整性。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,设计目标是产生一个固定长度的数字指纹,这个指纹可以代表...

    CheckTool.rar

    《全面解析:校验工具CheckTool的使用与原理》 在信息技术领域,数据的完整性和准确性至关重要。为了确保数据在传输、存储过程中不被错误篡改,人们常常使用各种校验工具来进行验证。今天我们将深入探讨一款名为...

    MD5Check! 2.0

    MD5Check! 2.0 是一款专为用户设计的高效、便捷的MD5校验工具,它提供了直观的界面和进度条功能,使得在计算文件的MD5值时能够清晰地了解操作进度,增强了用户体验。MD5Check! 2.0 主要用于验证文件的完整性和真实性...

    MD5检验器(Md5Check)

    MD5检验器(Md5Check)

    MD5check工具

    MD5check工具是一款高效、便捷的实用程序,主要用于计算文件的MD5哈希值。MD5,全称为Message-Digest Algorithm 5,是由计算机科学家Ronald Rivest在1991年设计的一种加密散列函数。它通过特定的算法将任意长度的...

    MD5校验工具 MD5Check

    MD5校验工具MD5Check是一款实用的、无需安装的小型应用程序,专为验证文件完整性而设计。在互联网上下载大型软件或重要文件时,确保文件未被篡改或损坏至关重要,这就是MD5校验码的用武之地。MD5(Message-Digest ...

    MD5check 查看器 MD5

    MD5check 查看器是一款专为用户设计的简单易用的工具,主要用于验证文件的MD5哈希值。MD5(Message-Digest Algorithm 5)是一种广泛使用的密码学散列函数,可以产生一个128位(16字节)的散列值,通常用32个十六进制...

    MD5Check校验码生成器.zip

    MD5Check校验码生成器是一个实用工具,主要用于在MCU(微控制器)固件升级过程中验证文件的完整性和一致性。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转化为固定长度的...

    MD5check.rar

    MD5check.rar是一款用于验证文件或字符串MD5哈希值的工具。MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,它能够将任意长度的数据转化为一个固定长度的摘要,通常为32位的十六进制数。这个摘要具有不...

    MD5-Check.exe

    MD5-Check工具。 可以用来计算MD5和SHA的值。。。。。

    Windows MD5 Check

    这是一个在Windows下用来计算和校验文件MD5值的工具.  现在,越来越多的网站提供了可供直接刻录的文件,通常文件扩展名为.iso。由于光盘刻录的不可改写性,因此该文件下载的是否完全正确就关系到光盘刻录的正确性...

    遍历检查文件夹所有文件list及MD5 check sum

    标题“遍历检查文件夹所有文件list及MD5 check sum”涉及的主要知识点包括: 1. 文件系统对象(FileSystemObject):VB.NET中,我们可以使用`Microsoft.VisualBasic.FileIO.FileSystem`类或`System.IO`命名空间中的...

Global site tag (gtag.js) - Google Analytics