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是一个与MD5校验相关的工具或程序,它很可能用于验证文件的完整性和真实性。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能将任意长度的数据转化为固定长度的摘要信息,通常是一个128位...
1. **多格式支持**:CheckTool支持多种校验和算法,包括但不限于MD5、SHA-1、SHA-256等,用户可以根据需求选择合适的算法。 2. **批量处理**:除了计算单个文件的校验和,CheckTool还允许用户一次性处理多个文件或...
1. 获取目标文件的MD5值:使用MD5 Check或SUN_MD5Check这样的工具计算文件的MD5摘要。 2. 记录或获取官方的MD5值:这通常可以在文件的下载页面或者随文件一起提供的文本文件中找到。 3. 比对MD5值:将计算得到的MD5...
Windows MD5 Check,她可以检验任何文件(可执行程序,图形图像文件,文本文件,压缩文件,二进制文件,刻录文件,未下载完全的临时文件......)的MD5值,准确无误!比如在拷贝一个文件的时候,不妨用她先来做个检验,得到一个值,...
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算法的校验工具,用于检查文件的MD5值是否与预知的MD5值一致,以确认文件在传输或存储过程中是否被篡改。它包含了两个文件:`Md5Check.exe`是可执行程序,可以直接运行进行MD5校验;`source`...
MD5 Check是一款用于验证文件完整性的实用工具,它利用了MD5散列算法来检查文件的完整性。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,设计目标是产生一个固定长度的数字指纹,这个指纹可以代表...
《全面解析:校验工具CheckTool的使用与原理》 在信息技术领域,数据的完整性和准确性至关重要。为了确保数据在传输、存储过程中不被错误篡改,人们常常使用各种校验工具来进行验证。今天我们将深入探讨一款名为...
MD5Check! 2.0 是一款专为用户设计的高效、便捷的MD5校验工具,它提供了直观的界面和进度条功能,使得在计算文件的MD5值时能够清晰地了解操作进度,增强了用户体验。MD5Check! 2.0 主要用于验证文件的完整性和真实性...
MD5检验器(Md5Check)
MD5check工具是一款高效、便捷的实用程序,主要用于计算文件的MD5哈希值。MD5,全称为Message-Digest Algorithm 5,是由计算机科学家Ronald Rivest在1991年设计的一种加密散列函数。它通过特定的算法将任意长度的...
MD5校验工具MD5Check是一款实用的、无需安装的小型应用程序,专为验证文件完整性而设计。在互联网上下载大型软件或重要文件时,确保文件未被篡改或损坏至关重要,这就是MD5校验码的用武之地。MD5(Message-Digest ...
MD5check 查看器是一款专为用户设计的简单易用的工具,主要用于验证文件的MD5哈希值。MD5(Message-Digest Algorithm 5)是一种广泛使用的密码学散列函数,可以产生一个128位(16字节)的散列值,通常用32个十六进制...
MD5Check校验码生成器是一个实用工具,主要用于在MCU(微控制器)固件升级过程中验证文件的完整性和一致性。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转化为固定长度的...
MD5check.rar是一款用于验证文件或字符串MD5哈希值的工具。MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,它能够将任意长度的数据转化为一个固定长度的摘要,通常为32位的十六进制数。这个摘要具有不...
MD5-Check工具。 可以用来计算MD5和SHA的值。。。。。
这是一个在Windows下用来计算和校验文件MD5值的工具. 现在,越来越多的网站提供了可供直接刻录的文件,通常文件扩展名为.iso。由于光盘刻录的不可改写性,因此该文件下载的是否完全正确就关系到光盘刻录的正确性...
标题“遍历检查文件夹所有文件list及MD5 check sum”涉及的主要知识点包括: 1. 文件系统对象(FileSystemObject):VB.NET中,我们可以使用`Microsoft.VisualBasic.FileIO.FileSystem`类或`System.IO`命名空间中的...