`
zhouzaibao
  • 浏览: 294153 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java中对文件计算MD5

阅读更多
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

分享到:
评论
2 楼 LinApex 2014-07-17  
文件内容一次性读入,性能消耗非常大
1 楼 yinger_fei 2011-02-25  
thank you!

相关推荐

    Java计算文件MD5值(支持大文件)

    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加密

    通过对上述代码的分析,我们可以清楚地了解到如何在Java中实现文件的MD5加密功能。这种方法不仅可以用于验证文件的一致性,还可以用于简单场景下的数据校验。尽管MD5存在一定的安全风险,但在非敏感信息处理方面仍然...

    java写的 文件MD5码计算工具 及源码

    在Java中,`java.security.MessageDigest`类提供了MD5算法的支持,开发者可以通过实例化该类并调用其方法来计算MD5码。 在本项目中,"MD5Tool-1.jar"是已经编译好的可执行文件,用户可以直接运行它来计算目标文件的...

    java源码 java 获取文件md5值(用于检测文件完整性) 2018127

    本示例代码是关于如何使用Java来计算文件的MD5哈希值,这对于检查文件在传输或存储过程中是否被篡改非常有用。 首先,我们需要引入Java Cryptography Extension (JCE),它提供了加密和解密的功能,包括MD5算法。在...

    java调用MD5加密方式计算摘要值(有界面)

    在提供的"MessageSecurity"文件中,可能包含了一个具有图形用户界面(GUI)的Java应用程序,该程序允许用户输入文本并显示其MD5摘要值。这可能是为了教学目的,让用户直观地理解MD5加密的过程。这样的界面通常会包含...

    java中文件的MD5和SHA-1的使用

    "Java 中文件的 MD5 和 SHA-1 的使用" Java 中提供了一个类 java.security.MessageDigest,該类是一种提供密码安全消息摘要如 SHA-1 和 MD5 功能的引擎类。该类可以用来计算文件的 MD5 和 SHA-1 值,不需要额外使用...

    一个比较好用的md5计算工具

    - 集成到文件浏览器:有的工具可以集成到文件资源管理器中,右键菜单直接计算MD5,操作简便。 5. **使用MD5Summer.exe**: - 下载完成后,双击md5summer.exe启动程序。 - 界面中通常会有“添加文件”或“打开”...

    java实现的计算文件的md5值

    java实现的计算文件的md5值 工具类代码

    java 获取文件MD5值

    在Java编程中,获取文件的MD5值是一项常见的任务,主要用在文件校验、防止文件重复上传或者比较文件是否相同等场景。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能将任意长度的数据映射为固定...

    获取目录下所有文件和文件夹,并计算其MD5值,两个文件夹比较,得出被篡改的目录路径

    计算MD5值可以使用Java的`java.security.MessageDigest`类,先创建MD5实例,然后读取文件内容,每次读取一小部分,更新MD5摘要,最后得到完整的MD5值。 比较两个文件夹的内容时,可以将每个文件或子目录的路径和...

    计算文件的MD5值

    在处理大文件时,由于内存限制,我们不能一次性读取整个文件到内存中计算MD5。因此,通常采用分段读取的方式来计算。这种方法分为以下几个步骤: 1. **初始化哈希状态**:创建一个MD5算法对象,初始化它的内部状态...

    解决java 与C# MD5 不一致问题 代码

    本文将详细介绍如何解决Java与C#中MD5哈希值不一致的问题,并提供相应的代码示例。 #### 一、MD5算法简介 MD5(Message-Digest Algorithm 5)是RSA数据安全公司设计并发布的一种散列函数,它能够接收任意长度的...

    JAVA 生成文件的MD5码

    在Java中,我们可以使用`java.security.MessageDigest`类来计算文件的MD5哈希值。以下是一个简单的示例代码: ```java import java.io.File; import java.io.FileInputStream; import java.security.MessageDigest;...

    计算文件MD5

    在标题"计算文件MD5"中,我们讨论的是如何通过编程实现对文件内容进行MD5哈希计算,生成一个唯一的MD5值,以验证文件是否被篡改或在传输过程中是否保持完整。计算文件MD5的步骤一般包括以下几个部分: 1. **读取...

    JavaSwing文件Md5值计算器

    在JavaSwing文件Md5值计算器中,开发者可能会使用JFileChooser组件来让用户选择要计算MD5值的文件,JOptionPane来显示计算结果,以及可能的进度条组件JProgressBar来展示计算过程。 MD5的计算过程涉及到了数据处理...

    MD5算法的JavaBean.rar_md5_md5 文件比对 java_md5算法_指纹_计算 文件 MD5

    MD5(Message-Digest Algorithm 5)是一种广泛应用于信息安全领域的哈希函数,它能将任意长度的数据转换为固定长度的128位...通过创建一个JavaBean,我们可以方便地对任意文件进行MD5计算,并在多个文件之间进行比较。

    计算文件的MD5结果

    在编程中,许多语言都提供了计算MD5的库或函数。例如,在Python中,可以使用`hashlib`库来计算文件的MD5值: ```python import hashlib def calculate_md5(file_path): with open(file_path, 'rb') as f: md5 = ...

    java md5 计算 util

    使用java 计算文件的MD5值,弥补了网上百度内容的计算错误,--如果第一位是0 会丢失的问题。

    Java语言实现的md5,rsa算法传送文件

    发送方在发送前先计算文件的MD5摘要,接收方接收到文件后也计算一次,如果两个摘要相同,说明文件在传输过程中没有被篡改。 RSA是一种非对称加密算法,它有公钥和私钥两部分。公钥可以公开,用于加密;私钥必须保密...

Global site tag (gtag.js) - Google Analytics