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();
}
}
public static void main(String[] args) throws IOException {
long begin = System.currentTimeMillis();
File big = new File("E:/游戏/冲绳那霸.rar");
String md5=getFileMD5String(big);
long end = System.currentTimeMillis();
System.out.println("md5:"+md5+" time:"+((end-begin)/1000)+"s");
}
/**
* 适用于上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);
}
}
分享到:
相关推荐
### Java_MD5加密工具类详解 #### 一、概述 在信息安全领域,数据加密是确保数据安全的重要手段之一。MD5(Message-Digest Algorithm 5)作为一种常用的散列算法,在许多场景下被用来生成固定长度的摘要信息。本文...
MD5工具类在Java中的实现主要依赖于`java.security.MessageDigest`类。这个类提供了各种摘要算法的实例,包括MD5。下面我们将详细介绍如何创建一个简单的MD5工具类,并讨论其在数据加密中的应用。 首先,我们需要...
这个“一个比较好用的md5计算工具”很可能是一个名为“MD5Summer”的应用程序,提供计算文件MD5值的功能。MD5Summer.exe很可能是该工具的可执行文件,用户下载后可以直接运行。下面我们将详细探讨MD5计算工具和MD5...
本资源提供的"JAVA工具类"整合了XML处理、JSON操作、MD5加密以及加解密功能,对提高开发效率大有裨益。 1. **XML处理**: - DOM解析:DOM(Document Object Model)是一种将XML文档映射为树形结构的方法,通过它...
因此,对于安全性要求较高的场景,如密码存储,MD5已经不再适用,现在更倾向于使用SHA-256等更安全的哈希算法。 总的来说,MD5在Java编程中是一个常用的工具,用于生成数据的指纹。虽然MD5的安全性已经不如以前,但...
### MD5加密工具类知识点详解 #### 一、MD5简介 MD5(Message-Digest Algorithm 5)是一种广泛使用的密码散列函数,可以产生一个128位(16字节)的散列值(又称哈希值)。它通过一个可变长度的数据块输入,产生一个...
这个工具类在Java环境下开发,适用于软件或插件开发过程中对数据的完整性进行校验。 MD5的主要特点是其不可逆性,即从哈希值无法反推出原始数据,这使得它在存储密码、验证文件完整性和防止数据篡改等方面有广泛...
HTTP文件的队列下载工具类则是网络编程的一部分,它允许程序按顺序或并发地下载多个HTTP资源,特别适用于大文件或多个文件的批量下载。这个工具类可能会实现线程控制、断点续传、错误处理等功能,以确保下载过程的...
`javamd5加密工具类`通常是指一个Java类库,提供MD5加密的功能。在描述中提到了几个关键步骤: 1. **解压**:这可能指的是下载了一个包含MD5加密功能的压缩文件,需要先进行解压操作,通常使用的是像WinRAR或7-Zip...
在Java编程中,工具类是封装了特定功能的类,它们通常包含静态方法,以便开发者在不创建对象的情况下调用这些方法。以下是一些在Java中常用的工具类及其功能详解: 1. **Base64**: Base64是网络上最常见的用于传输8...
在Java中,可以使用`java.security.MessageDigest`类来实现MD5加密。以下是一个简单的MD5加密示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class ...
MD5,全称为Message-Digest Algorithm 5,是一种广泛使用的哈希..."MD5-mask"可能是这个工具类的源代码文件,通过查看这个文件,我们可以学习如何在Java中实现MD5加密,或者直接在项目中引入这个类以快速实现MD5功能。
5. **MD5加密工具类**:MD5是一种常用的哈希函数,可以将任意长度的数据转换为固定长度的摘要。Java标准库中的`java.security.MessageDigest`类可以用来生成MD5摘要,适用于密码存储等场景。 6. **FTP传输工具类**...
在Java编程语言中,工具类(Utility Class)是包含各种静态方法的类,这些方法用于执行特定任务,如数据处理、格式化、计算等。Java提供了丰富的内置工具类,但开发者也经常创建自定义工具类以满足项目需求。标题...
3. **快速性**:MD5计算速度快,适用于大量数据的处理。 在Java中,我们可以使用`java.security.MessageDigest`类来实现MD5算法。以下是一个简单的示例代码: ```java import java.security.MessageDigest; import...
在IT行业中,加密算法是...总之,Kotlin中的加密算法工具类集成了多种加密方法,为开发人员提供了方便的数据保护手段。在选择合适的加密算法时,应考虑性能、安全性以及应用场景,确保数据在传输和存储过程中的安全性。
“WinMD5.exe”是这个压缩包内的文件名,这很可能是一个适用于Windows操作系统的MD5计算工具。它是一个可执行文件,用户可以直接运行来计算文件的MD5值。通常,这类工具不仅支持单个文件的MD5计算,还可能提供批量...
总的来说,Java中的字符串工具类可以帮助开发者更方便地处理字符串相关的任务,而MD5工具类则提供了数据的加密和验证功能。这两个工具类在日常开发中都有广泛的应用,了解并掌握它们的使用对于提升开发效率和代码...
1. **初始化**:创建一个`MessageDigest`实例,但由于我们不使用`sun.misc`,可以使用`java.security.MessageDigest`类的静态方法`getInstance("MD5")`来获取MD5算法的实例。 2. **更新数据**:通过`update`方法...
5. **文件操作工具类**:如FileUtils,提供读写文件、创建目录、复制文件等常用功能,简化了文件操作。 6. **IO流工具类**:如IOUtils,用于处理输入输出流,支持读取、关闭、复制流等操作,防止资源泄露。 7. **...