自己在原来的类上做了些修改可以。大家帮我查考查考
public class MD5Util {
/**
* 默认的密码字符串组合,用来将字节转换成 16 进制表示的字符,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 e) {
e.printStackTrace();
}
}
public static String getFileMD5String(File file) throws IOException {
InputStream fis;
fis = new FileInputStream(file);
byte[] buffer = new byte[1024];
int numRead = 0;
while ((numRead = fis.read(buffer)) > 0) {
messagedigest.update(buffer, 0, numRead);
}
fis.close();
return bufferToHex(messagedigest.digest());
}
public static String getStringMD5(String str){
byte[] buffer=str.getBytes();
messagedigest.update(buffer);
return bufferToHex(messagedigest.digest());
}
public 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];// 取字节中高 4 位的数字转换
// 为逻辑右移,将符号位一起右移,此处未发现两种符号有何不同
char c1 = hexDigits[bt & 0xf];// 取字节中低 4 位的数字转换
stringbuffer.append(c0);
stringbuffer.append(c1);
}
}
分享到:
相关推荐
在C++中实现MD5加密,主要涉及以下几个关键步骤和知识点: 1. **MD5算法的基本流程**: - 分块:MD5处理的消息被分为512位(64字节)的块。 - 初始化:使用一组初始值初始化四个32位的变量A、B、C和D。 - 扩展...
Spark-md5是一个用JavaScript编写的快速、高效的md5库。它根据MD5算法,将输入的任意长度的明文,经过一系列的操作,转换...Spark-md5实现了在浏览器中对文件进行哈希计算,并且在上传文件时可有效检测文件是否被篡改。
在Java中,MD5加密通常通过`java.security.MessageDigest`类实现。以下是一个简单的Java MD5加密示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public ...
`PwdEncoder.java`可能是另一个通用的密码编码接口或抽象类,它定义了密码编码的基本操作,而`Md5PwdEncoder`可能是实现这个接口的具体类。这样的设计遵循了面向对象编程中的"接口隔离原则",使得系统更易于扩展和...
在压缩包中的"MD5加密算法VC++"文件可能是一个实现了MD5算法的C++源代码项目,适用于Visual C++开发环境。该项目可能包含了MD5类的定义、实现和测试用例。你可以通过编译和运行这个项目来验证其正确性,也可以通过...
下面是一个简单的MD5加密通用代码示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Formatter; public class MD5 { public static String ...
源代码通常会有一个主函数,如`main()`,它接收用户输入或者读取文件,调用MD5函数进行加密,并打印出结果。你可以通过编译和运行这个程序来验证其MD5加密功能是否正确。不过,由于具体实现没有提供,这里无法给出...
4. **Tools.dcu**:可能包含了辅助工具或通用函数,如字符串操作、文件处理等,这些可能在MD5加密过程中有用。 5. **md5_test_main.ddp**:这是Delphi项目的项目文件,记录了项目的配置信息,如源文件、编译选项等...
描述中的内容再次确认了这是一个关于MD5加密算法的Visual C++实现,用户可以下载这个zip文件来查看和使用这些源代码。 标签中提到的关键词:"visual c++"指的是微软开发的C++集成开发环境,"md5"是核心主题,"加密...
回到C#语言环境下的MD5加密实现,我们可以看到在给定的代码片段中,程序员利用了.NET Framework提供的`System.Security.Cryptography`命名空间下的`MD5CryptoServiceProvider`类来实现MD5加密功能。下面是对这段代码...
在Windows平台上,还提供了可执行文件,这可能是将C++编译的MD5程序打包成的,用户可以直接运行以快速计算MD5值,而无需编译源代码。 在安全方面,虽然MD5因为其碰撞漏洞(即能找到两个不同的输入数据产生相同的MD5...
在这个案例中,提供的"可以直接调用的c++实现的MD5加密算法函数"应该是一个经过验证的、可以直接集成到其他C++项目中的MD5计算模块。这种函数通常会包含以下几个关键部分: 1. **初始化**: 初始化MD5状态变量。MD5...
这个类通常包含MD5加密的核心方法,如`toMD5(String input)`,它接收一个字符串作为输入,通过MD5算法计算出其对应的128位哈希值,通常以32位的16进制字符串形式返回。MD5Utils还可能包括其他辅助方法,如将二进制...
1. **md5.clw**:这是VC++的类工作空间文件,记录了项目中类的相关信息。 2. **md5.cpp**:这个文件包含了MD5加密算法的具体实现。MD5算法通常由四个不同的处理步骤组成:初始化、列混淆、行混淆和结果的转换,这些...
根据给定的文件信息,我们可以总结出以下关于“MD5加密算法的C++代码实现”的详细知识点: ### MD5加密算法简介 MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,它可以将任意长度的信息转换为一个...
根据给定的文件信息,我们可以深入探讨如何使用Java类实现MD5加密,这在现代软件开发,特别是涉及用户数据安全的场景中极为重要。MD5(Message-Digest Algorithm 5)是一种广泛使用的散列算法,它能将任意长度的数据...
### C#中的加密解密类:DES、3DES与MD5 #### 一、概述 在C#中,实现数据加密解密的功能是确保信息安全的关键技术之一。本篇将详细介绍如何利用C#来实现DES(Data Encryption Standard)、3DES(Triple Data ...
这个类提供了一种通用的方法来生成消息摘要,包括MD5。以下是一个简单的MD5加密的Java代码示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5...
MD5是一种广泛使用的加密散列函数,产生一个128位(16字节)的散列值,通常表示为32个十六进制数字。在Web开发中,MD5常用于数据校验、密码存储以及生成唯一标识等场景。 Spark-md5-js库的亮点在于它的高效性和兼容...
**MD5加密算法:原理、实现与应用** **一、引言** MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由Ronald L. Rivest在1992年开发。它是一种密码散列函数,用于数据完整性验证和数字签名,其目的是...