今天在工作中需要生成一个文件的MD5码用作文件上传的一个参数,MD5码是一个用来校验文件或者文本内容完整性一个常用的特征码。
MD5码详细介绍:
http://baike.baidu.com/view/1493720.htm?fr=aladdin
下面用JAVA原生API简单实现,附带2种二进制转十六进制的方法
private static void generateMD5(String content) {
try {
System.out.println("Content : " + content);
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] digest = md5.digest(content.getBytes());
System.out.println("MD5 : " + binaryTo16Radix1(digest));
System.out.println("MD5 : " + binaryTo16Radix2(digest));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
private static void generateMD5(File file) {
FileInputStream fis = null;
try {
System.out.println("File " + file.getPath());
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] b = new byte[1024];
for (fis = new FileInputStream(file);;) {
int rl = fis.read(b);
if (rl != -1) {
md5.update(b, 0, rl);
} else {
break;
}
}
byte[] digest = md5.digest();
System.out.println("MD5 : " + binaryTo16Radix1(digest));
System.out.println("MD5 : " + binaryTo16Radix2(digest));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException ignored) {
}
}
}
}
private static String binaryTo16Radix1(byte[] digest) {
BigInteger bi = new BigInteger(1, digest);
return bi.toString(16);
}
private static String binaryTo16Radix2(byte[] digest) {
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(Integer.toString((b & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
}
代码拙劣,如果写的不对,请大家指正!谢谢大家!
分享到:
相关推荐
Java实现MD5大文件校验码详细解析: 包括具体方法解释、注释 通俗易懂、易于理解
2. **MessageDigest**:对于更复杂的校验码,如MD5或SHA,可以使用`java.security.MessageDigest`类。首先需要实例化对应的算法,然后更新数据,最后获取校验码的字节数组。 ```java MessageDigest md = ...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,可以将任意长度的输入转化为固定长度的输出,通常用于数据校验和密码存储。然而,由于MD5的碰撞攻击弱点,直接使用MD5来存储密码已经不够安全。为了...
标题提到的"JS生成MD5值和JAVA生成MD5值",实际上是指在JavaScript和Java这两种不同的编程语言中,如何对同一份数据计算MD5哈希值。由于MD5算法是公开的,理论上在任何支持该算法的编程环境下都应该得到相同的输出。...
本篇文章将详细探讨如何在 Java 中生成 MD5 编码,以及其相关知识点。 MD5 是一种广泛使用的哈希函数,它能够将任意长度的输入(也叫做预映射或消息)转化为固定长度的输出,通常是一个 128 位的二进制数,通常用 ...
MD5(Message-Digest Algorithm 5)是一种广泛用于数据完整性校验和安全散列的算法。它由美国麻省理工学院的Ronald Rivest在1991年设计,主要用于确保数据在传输、存储或处理过程中的完整性。MD5算法会将任意长度的...
在Java编程语言中,生成文件的MD5码是常见的需求,例如用于文件校验、数据完整性的验证等。这篇博客“JAVA 生成文件的MD5码”可能讲述了如何在Java环境中实现这一功能。 首先,我们需要理解MD5的计算过程。MD5算法...
MD5(Message-Digest Algorithm 5)是RSA数据安全公司设计并发布的一种散列函数,它能够接收任意长度的消息作为输入,并生成一个固定长度(通常是128位或16字节)的十六进制字符串作为输出。由于其计算速度快且安全...
总结,这个基于Java的校验码工具结合了MD5、SHA1和CRC32三种校验算法,通过Swing构建的用户界面,提供了一个直观易用的平台来验证数据的完整性和一致性。无论是在个人工作还是企业环境中,这样的工具都能发挥重要的...
5. **比对校验**:如果你有两个相同文件的MD5校验码应该完全一致,不同则说明文件内容存在差异。 在提供的压缩包文件“MD5”中,可能包含了MD5校验的源代码示例。通过查看和学习这段源代码,你可以了解MD5校验的...
1. **生成MD5值**:首先,你需要使用MD5校验工具对目标文件进行计算,工具会读取文件内容并应用MD5算法生成一个唯一的32位十六进制数字,这就是文件的MD5摘要。 2. **验证MD5值**:当获取到文件来源提供的正确MD5值...
标题中的“生成md5码的工具”是指一种软件或应用程序,能够帮助用户快速计算出文件的MD5值。这种工具通常具有用户友好的界面,只需选择要检测的文件,它就能自动计算并显示该文件的MD5摘要。描述中的“超级好用”...
然而,MD5的弱点在于其存在碰撞问题,即不同的输入可以生成相同的输出,这使得MD5不再适合用于安全敏感的应用。2004年,Mihir Bellare和王小云等人展示了如何构造MD5碰撞,进一步降低了其安全性。因此,现在MD5已经...
在Java中生成MD5码: 在Java中,我们可以使用`java.security.MessageDigest`类来实现MD5码的生成。以下是一个简单的Java程序示例,用于计算字符串的MD5散列值: ```java import java.security.MessageDigest; ...
在Java中,生成MD5码一般涉及`java.security.MessageDigest`类。首先,我们需要创建一个`MessageDigest`实例,指定为MD5算法。然后,使用`update`方法传递要进行哈希计算的数据,可以是一段字符串或者字节数组。最后...
下面我们将详细介绍如何使用Java生成MD5码。 首先,你需要引入`java.security`包,这个包包含了处理加密和哈希算法的相关类。在Java代码中,你可以通过以下方式导入: ```java import java.security.MessageDigest...
3. **生成MD5摘要**: - 使用`MessageDigest.getInstance("MD5")`获取MD5算法实例。 - 通过`FileInputStream`读取文件内容,并使用`while`循环逐段更新MD5摘要。 - 最终调用`digest()`方法获取摘要并返回。 4. *...
MD5 是一种广泛使用的哈希算法,它生成一个128位的哈希值,通常表示为32个十六进制字符的字符串,就像描述中提到的 "cbad484f0b02f0daf775137aeeOf4e2e"。这个字符串就是文件的数字指纹,发送方可以提供这个指纹供...