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 FileMd5Utils {
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(FileMd5Utils.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 = "F:\\test01\\1.txt";
String str = "d0970714757783e6cf17b26fb8e2298f";
String str2 = "ea3ed20b6b101a09085ef09c97da1597";
System.out.println(str.equals(str2));
System.out.println(getFileMD5String(fileName));
}
}
分享到:
相关推荐
例如,可以创建一个`<input type="file">`元素让用户选择文件,接着监听文件选择事件,获取文件并计算MD5值。以下是一个简单的示例: ```html <!DOCTYPE html> <title>Browser MD5 File 示例 ...
Java计算文件MD5值(支持大文件) package com.hthl.xxtd; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.MessageDigest; import org....
总的来说,MD5File是一个简单但实用的命令行工具,通过提供MD5散列计算功能,帮助用户验证文件的完整性和一致性,确保数据的安全无误。虽然MD5算法存在安全性上的局限,但在非安全关键的应用场景中,它依然是一种...
你提到的"计算MD5值的C++类"提供了这样的功能。 MD5算法的基本流程包括四个步骤:初始化、压缩函数、填充和输出。初始化阶段设置16个32位的中间变量,压缩函数通过对输入信息进行多次迭代处理,不断更新这些中间...
这种方法更加通用,不仅限于Web环境,可以通过创建`MD5CryptoServiceProvider`对象来计算MD5值。 ```csharp using System.Security.Cryptography; using System.Text; string myString = "Hello World!"; MD5 md5 ...
md5sum file1.txt file2.txt file3.txt ``` 6. **验证MD5值** 当从网络上下载了重要文件后,你可以通过比较下载文件的MD5值与发布者提供的MD5值来确认文件的完整性。如果两者相同,则表明文件在传输过程中没有...
在编程中,许多语言都提供了计算MD5的库或函数。例如,在Python中,可以使用`hashlib`库来计算文件的MD5值: ```python import hashlib def calculate_md5(file_path): with open(file_path, 'rb') as f: md5 = ...
4. **使用计算MD5的函数**:在你的MFC应用程序中,调用这个函数,传入你想要计算MD5值的文件路径,然后就可以得到文件的MD5值了。 5. **处理大文件**:在上述代码中,我们使用了一个固定大小的缓冲区读取文件,这种...
在标题"计算文件MD5"中,我们讨论的是如何通过编程实现对文件内容进行MD5哈希计算,生成一个唯一的MD5值,以验证文件是否被篡改或在传输过程中是否保持完整。计算文件MD5的步骤一般包括以下几个部分: 1. **读取...
以下是一个简单的C++程序示例,它使用了开源库`openssl`来计算MD5值: ```cpp #include <openssl/md5.h> #include #include #include #include std::string calculateMD5(const std::string& filePath) { std...
MD5 File Hasher 是一款专为用户批量生成文件MD5哈希值的工具。MD5,全称为Message-Digest Algorithm 5,是一种广泛使用的加密散列函数,产生一个128位(16字节)的散列值,通常用32个十六进制数字表示。这种散列...
这个函数首先创建一个MD5摘要对象,然后使用`MD5()`函数计算输入字符串的哈希值。最后,通过循环遍历摘要数组,将每个字节转换为16进制字符串,并拼接成最终的MD5值。 如果你想计算文件的MD5,可以读取文件内容并...
标题中的“在浏览器中获取文件或字串的md5的js...总结,利用JavaScript在浏览器中计算MD5是一种常见的需求,尤其在进行数据验证和前端开发时。SparkMD5库提供了一种有效、便捷的解决方案,但需要注意MD5的安全性问题。
这个例子中,`calculateMD5`函数接收文件路径,打开文件,逐块读取内容并计算MD5值,最后将16字节的结果转换成16进制字符串返回。 总结来说,C++6.0环境下实现MD5计算可以选择引入第三方库如OpenSSL,或者自行实现...
MD5值在很多场景下都很有用,比如在文件下载过程中,用户可以先获取服务器上文件的MD5值,下载完成后本地计算文件的MD5值,两者相匹配则说明文件传输无误。然而,需要注意的是,MD5算法的安全性在现代密码学标准中...
总结来说,计算文件的MD5值在C++中主要依赖于第三方库如`openssl`,通过初始化MD5上下文、读取文件内容更新MD5值,最后生成和返回16进制的MD5摘要。注意文件路径的处理和适配不同操作系统的需求,以确保程序的健壮性...
在提供的文件列表中,`spark-md5.min.js`很可能就是一个轻量级的JavaScript MD5库,能够方便地集成到项目中,用于计算MD5。 以下是使用这些技术的基本步骤: 1. **获取图片数据**:通过HTML的`<input type="file">...
"File_Md5.zip"这个压缩包可能包含了用于进行MD5计算的Delphi 10代码示例或库。Delphi是一款强大的面向对象的 Pascal 编程环境,由Embarcadero Technologies开发,它支持Windows、macOS、iOS和Android等多个平台。在...
System.err.println("计算 " + file + " 的MD5时发生错误:" + e.getMessage()); } } ``` 总的来说,MD5算法在Java中是一个强大的工具,用于生成文件指纹、比对文件内容以及进行数据校验。通过创建一个JavaBean,...
首先,我们通过`file()`方法指定要计算MD5的文件路径,然后将其字节内容传递给`md5Hex`方法,该方法会返回一个16进制表示的MD5字符串。最后,我们通过`println`打印出MD5值。 为了运行这个任务,只需在终端或命令行...