`
linyu19872008
  • 浏览: 285246 次
  • 性别: 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;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MD5FileUtil {
	private static final Logger logger = LoggerFactory
			.getLogger(MD5FileUtil.class);
	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) {
			logger.error("MD5FileUtil messagedigest初始化失败", e);
		}
	}

	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());
	}

	public static String getMD5String(String s) {
		return getMD5String(s.getBytes());
	}

	public static String getMD5String(byte[] bytes) {
		messagedigest.update(bytes);
		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 boolean checkPassword(String password, String md5PwdStr) {
		String s = getMD5String(password);
		return s.equals(md5PwdStr);
	}

	public static void main(String[] args) throws IOException {
		long begin = System.currentTimeMillis();

		File big = new File("D:\\temp\\jre-7u11-linux-i586.tar.gz");
		String md5 = getFileMD5String(big);

		long end = System.currentTimeMillis();
		System.out.println("md5:" + md5);
		System.out.println("time:" + ((end - begin) / 1000) + "s");

	}

}

 

分享到:
评论
3 楼 sunman5277 2014-05-19  
貌似文件超过2G会报以下错误,请问该如何解决?
Exception in thread "main" java.lang.IllegalArgumentException: Size exceeds Integer.MAX_VALUE
at sun.nio.ch.FileChannelImpl.map(Unknown Source)
2 楼 bro_feng 2013-11-22  
这段代码被复制了很多次,但是都没加注释。如果加上就更好了
1 楼 aiafei0001 2013-09-14  
真不错,好用极了!!!

相关推荐

    java 获取文件MD5值

    总的来说,Java获取文件MD5值的关键在于理解`MessageDigest`类的使用以及如何将二进制数据转换为可读的十六进制字符串。`SystemUtil.java`中的方法封装了这一过程,提供了一种简洁的方式去获取文件的MD5值。在开发...

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

    以下是一个简单的Java源码示例,展示了如何获取文件的MD5值: ```java import java.io.FileInputStream; import java.io.IOException; import java.security.MessageDigest; import java.security....

    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....

    JavaSwing文件Md5值计算器

    JavaSwing文件Md5值计算器是一款基于Java Swing开发的实用工具,主要用于计算文件的MD5哈希值。MD5(Message-Digest Algorithm 5)是一种广泛使用的加密散列函数,产生一个128位(16字节)的散列值,通常用32个十六...

    JAVA_对文件MD5加密

    ### JAVA_对文件进行MD5加密 在计算机科学与信息安全领域中,MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,能够将任意长度的数据映射为一个固定长度(通常是128位)的十六进制数值。这种算法在数据...

    java 源代码 软件 获得文件的MD5值

    java源码,用来获得文件的MD5,如果电脑上没有MD5软件,可以用这个,一运行就知道MD5值是多少。 略作修改即可计算字符串的MD5值。

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

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

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

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

    Java 中文件MD5和SHA1的比较

    这段代码实现了计算文件MD5值的功能。关键步骤包括: 1. **文件输入流**:通过`FileInputStream`读取文件。 2. **MessageDigest实例化**:使用`MessageDigest.getInstance("MD5")`获取MD5算法的消息摘要对象。 3. **...

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

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

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

    这个“一个比较好用的md5计算工具”很可能是一个名为“MD5Summer”的应用程序,提供计算文件MD5值的功能。MD5Summer.exe很可能是该工具的可执行文件,用户下载后可以直接运行。下面我们将详细探讨MD5计算工具和MD5...

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

    在计算文件的 MD5 值时,需要使用 MessageDigest 类的 getInstance 静态方法来获取 MessageDigest 对象,并将参数设置为 "MD5"。然后,使用 FileInputStream 读取文件的内容,并将其传递给 MessageDigest 对象的 ...

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

    Java作为一种多平台通用的编程语言,提供了计算文件MD5码的功能。本项目就是一个基于Java编写的文件MD5码计算工具,使用NetBeans作为集成开发环境(IDE)进行开发。 首先,MD5码的计算原理是通过特定算法将输入的...

    md5java代码+md5工具

    MD5,全称为Message-Digest Algorithm 5,是一种广泛用于数据完整性校验和加密的哈希函数。在Java编程中,MD5常被用来...同时,`CalcMD5.exe`这样的工具可以帮助开发者和用户快速获取文件的MD5值,以进行一致性检查。

    文件-AES-MD5-Upload-Minio工具类.zip

    MD5FileUtils可能提供了计算文件MD5校验和的函数,以便用户确认文件在传输过程中是否被篡改或损坏。 接下来,FileUploadUtil显然与文件上传有关,这可能是一个工具类,封装了文件上传到服务器的相关逻辑。这可能...

    Md5.java.rar_MD5 JAVA_MD5.ja_java md5_md5_md5 java realization

    在标题"Md5.java.rar_MD5 JAVA_MD5.ja_java md5_md5_md5 java realization"中,我们可以推测这个压缩包包含了一个名为"Md5.java"的源代码文件,这是一个实现了MD5算法的Java类。MD5 JAVA可能指的是这个Java实现是...

    java MD5加密工具类

    2. **文件校验**:可以计算文件的MD5值,作为文件的指纹,用于验证文件是否完整或被篡改。 3. **数据一致性检查**:在网络传输数据时,接收方可以通过计算接收到的数据的MD5值与发送方提供的值进行比较,确认数据在...

    java实现MD5加密算法

    6. **MD5的应用**:在Java中,MD5常用于验证文件完整性,比如下载文件后检查MD5值是否与原始文件一致。此外,过去也曾用于密码存储,但现在通常会使用更安全的哈希算法如SHA-256,并配合盐值和迭代次数增加安全性。 ...

    jar包MD5加密包含用法

    6. **验证或比较MD5值**:你可以用同样的方式计算目标数据的MD5值,然后与已知的MD5值进行比较,以验证数据的完整性。 用法.txt文件很可能是提供关于如何在Java程序中使用JavaMD5.jar的详细指南,包括导入库、创建...

    java md5加密 解密

    服务器会提供文件的MD5校验和,客户端下载文件后计算其MD5值并与服务器提供的值比较,确保文件未在传输过程中受损。 总之,MD5在Java中主要用于数据的加密和完整性校验,但在当前安全需求下,应当考虑更安全的替代...

Global site tag (gtag.js) - Google Analytics