package com;
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;
public class MD5Util {
/**
* 默认的密码字符串组合,apache校验下载的文件的正确性用的就是默认的这个组合
*/
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 nsaex) {
System.err.println(MD5Util.class.getName()
+ "初始化失败,MessageDigest不支持MD5Util。");
nsaex.printStackTrace();
}
}
/**
* 适用于上G大的文件
*
* @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());
}
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();
// 2EA3E66AC37DF7610F5BD322EC4FFE48 670M 11s kuri双核1.66G 2G内存
File big = new File("D:\\imnew.zip");
String md5 = getFileMD5String(big);
long end = System.currentTimeMillis();
System.out.println("md5:" + md5 + " time:" + ((end - begin) / 1000)
+ "s");
}
}
分享到:
相关推荐
MD5加密文档.处理登录,注册的密码一些相关的操作
在描述中提到的“MD5加密文件代码”是指使用MD5算法对文件内容进行哈希处理的程序。这种代码通常包括读取文件内容,计算其MD5摘要,并将结果以字符串形式返回。通过对比两个文件的MD5摘要,可以快速判断它们是否内容...
md5文件加密
常用的md5加密文件,上传上来当做备份了,有需要的同学也可下载。 常用的md5加密文件,上传上来当做备份了,有需要的同学也可下载。
根据提供的文件信息,本文将详细解析“VB6中的MD5加密文件”的实现原理与关键步骤。MD5(Message-Digest Algorithm 5)是一种广泛使用的密码散列函数,它可以将任意长度的消息转换为一个固定长度(通常为128位)的...
在这个场景中,"MD5加密就JS文件"可能是指一个JavaScript文件,它提供了MD5加密的功能,使得前端开发者可以在进行Ajax请求时对发送的数据进行加密。 在Web开发中,Ajax(Asynchronous JavaScript and XML)请求是不...
以上就是关于“MD5加密文件和字符串”的详细解释,涵盖了MD5的基本概念、C++实现方法以及可能涉及的安全性问题。通过理解这些知识点,开发者可以在实际项目中有效地使用MD5进行数据的校验和加密。
遇到MD5加密文件,而又不知道的密码的,从事java方面遇到的问题
根据提供的文件信息,本文将详细解释MD5加密技术在Java中的实现原理以及如何在Web项目中使用该技术来加密和验证用户密码。 ### MD5加密技术简介 MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希算法,用于...
总结起来,遇到MD5加密文件的问题,首先要明确MD5通常用于验证而非加密,并尝试理解MD5值在系统中的角色。对于给定的ASP文件列表,可能需要通过源代码分析或数据库查询来找出如何利用MD5值来解密或访问文件。然而,...
DELPHI7可直接使用的MD5加密文件算法源代码,输入和输出均为byte格式
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转化为固定长度的摘要,通常用于数据完整性校验和密码加密。在C#编程语言中,MD5加密也是一项常用的技术。下面我们将深入探讨C#...
在给定的“javascript md5加密 js文件”中,主要涉及的核心是`md5.js`这个JavaScript库,它提供了一个方便的方法来实现MD5哈希加密。以下是对这个库的一些详细解释: 1. **MD5.js库的引入**: 在HTML文件中,可以...
本主题提供的“windows下MD5加密工具bat文件”是一个基于批处理脚本(.bat)的解决方案,允许用户在没有额外安装软件的情况下进行MD5加密操作。 批处理文件(.bat)是Windows操作系统中的一个特殊文本文件,它可以...
MD5算法由Ronald Rivest在1991年设计,它的目的是提供一种快速、简单的方法来验证文件或数据的完整性。MD5的过程是不可逆的,即不能通过散列值还原原始数据,因此适用于密码存储,但因存在碰撞问题,不适用于安全性...