import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* 计算文件的MD5
*/
public class FileMD5 {
protected static char hexDigits[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
protected static MessageDigest messageDigest = null;
static{
try{
messageDigest = MessageDigest.getInstance("MD5");
}catch (NoSuchAlgorithmException e) {
System.err.println(FileMD5.class.getName()+"初始化失败,MessageDigest不支持MD5Util.");
e.printStackTrace();
}
}
/**
* 计算文件的MD5
* @param fileName 文件的绝对路径
* @return
* @throws IOException
*/
public static String getFileMD5String(String fileName) throws IOException{
File f = new File(fileName);
return getFileMD5String(f);
}
/**
* 计算文件的MD5,重载方法
* @param file 文件对象
* @return
* @throws IOException
*/
public static String getFileMD5String(File file) throws IOException{
FileInputStream in = new FileInputStream(file);
FileChannel ch = in.getChannel();
MappedByteBuffer byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, 0, file.length());
messageDigest.update(byteBuffer);
return bufferToHex(messageDigest.digest());
}
private static String bufferToHex(byte bytes[]) {
return bufferToHex(bytes, 0, bytes.length);
}
private static String bufferToHex(byte bytes[], int m, int n) {
StringBuffer stringbuffer = new StringBuffer(2 * n);
int k = m + n;
for (int l = m; l < k; l++) {
appendHexPair(bytes[l], stringbuffer);
}
return stringbuffer.toString();
}
private static void appendHexPair(byte bt, StringBuffer stringbuffer) {
char c0 = hexDigits[(bt & 0xf0) >> 4];
char c1 = hexDigits[bt & 0xf];
stringbuffer.append(c0);
stringbuffer.append(c1);
}
public static void main(String[] args) throws IOException {
String fileName = "E:\\lyyy.flv";
long start = System.currentTimeMillis();
System.out.println(getFileMD5String(fileName));
long end = System.currentTimeMillis();
System.out.println("Consume " + (end - start) + "ms");
}
}
原文地址:http://hi.baidu.com/chenxiaowen/blog/item/9a9cb6deb5c2e95dccbf1abe.html
分享到:
相关推荐
Java计算文件MD5值(支持大文件) package com.hthl.xxtd; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.MessageDigest; import org....
通过对上述代码的分析,我们可以清楚地了解到如何在Java中实现文件的MD5加密功能。这种方法不仅可以用于验证文件的一致性,还可以用于简单场景下的数据校验。尽管MD5存在一定的安全风险,但在非敏感信息处理方面仍然...
在Java中,`java.security.MessageDigest`类提供了MD5算法的支持,开发者可以通过实例化该类并调用其方法来计算MD5码。 在本项目中,"MD5Tool-1.jar"是已经编译好的可执行文件,用户可以直接运行它来计算目标文件的...
本示例代码是关于如何使用Java来计算文件的MD5哈希值,这对于检查文件在传输或存储过程中是否被篡改非常有用。 首先,我们需要引入Java Cryptography Extension (JCE),它提供了加密和解密的功能,包括MD5算法。在...
在提供的"MessageSecurity"文件中,可能包含了一个具有图形用户界面(GUI)的Java应用程序,该程序允许用户输入文本并显示其MD5摘要值。这可能是为了教学目的,让用户直观地理解MD5加密的过程。这样的界面通常会包含...
"Java 中文件的 MD5 和 SHA-1 的使用" Java 中提供了一个类 java.security.MessageDigest,該类是一种提供密码安全消息摘要如 SHA-1 和 MD5 功能的引擎类。该类可以用来计算文件的 MD5 和 SHA-1 值,不需要额外使用...
- 集成到文件浏览器:有的工具可以集成到文件资源管理器中,右键菜单直接计算MD5,操作简便。 5. **使用MD5Summer.exe**: - 下载完成后,双击md5summer.exe启动程序。 - 界面中通常会有“添加文件”或“打开”...
java实现的计算文件的md5值 工具类代码
在Java编程中,获取文件的MD5值是一项常见的任务,主要用在文件校验、防止文件重复上传或者比较文件是否相同等场景。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能将任意长度的数据映射为固定...
计算MD5值可以使用Java的`java.security.MessageDigest`类,先创建MD5实例,然后读取文件内容,每次读取一小部分,更新MD5摘要,最后得到完整的MD5值。 比较两个文件夹的内容时,可以将每个文件或子目录的路径和...
在处理大文件时,由于内存限制,我们不能一次性读取整个文件到内存中计算MD5。因此,通常采用分段读取的方式来计算。这种方法分为以下几个步骤: 1. **初始化哈希状态**:创建一个MD5算法对象,初始化它的内部状态...
本文将详细介绍如何解决Java与C#中MD5哈希值不一致的问题,并提供相应的代码示例。 #### 一、MD5算法简介 MD5(Message-Digest Algorithm 5)是RSA数据安全公司设计并发布的一种散列函数,它能够接收任意长度的...
在Java中,我们可以使用`java.security.MessageDigest`类来计算文件的MD5哈希值。以下是一个简单的示例代码: ```java import java.io.File; import java.io.FileInputStream; import java.security.MessageDigest;...
在标题"计算文件MD5"中,我们讨论的是如何通过编程实现对文件内容进行MD5哈希计算,生成一个唯一的MD5值,以验证文件是否被篡改或在传输过程中是否保持完整。计算文件MD5的步骤一般包括以下几个部分: 1. **读取...
在JavaSwing文件Md5值计算器中,开发者可能会使用JFileChooser组件来让用户选择要计算MD5值的文件,JOptionPane来显示计算结果,以及可能的进度条组件JProgressBar来展示计算过程。 MD5的计算过程涉及到了数据处理...
MD5(Message-Digest Algorithm 5)是一种广泛应用于信息安全领域的哈希函数,它能将任意长度的数据转换为固定长度的128位...通过创建一个JavaBean,我们可以方便地对任意文件进行MD5计算,并在多个文件之间进行比较。
在编程中,许多语言都提供了计算MD5的库或函数。例如,在Python中,可以使用`hashlib`库来计算文件的MD5值: ```python import hashlib def calculate_md5(file_path): with open(file_path, 'rb') as f: md5 = ...
使用java 计算文件的MD5值,弥补了网上百度内容的计算错误,--如果第一位是0 会丢失的问题。
发送方在发送前先计算文件的MD5摘要,接收方接收到文件后也计算一次,如果两个摘要相同,说明文件在传输过程中没有被篡改。 RSA是一种非对称加密算法,它有公钥和私钥两部分。公钥可以公开,用于加密;私钥必须保密...