import java.security.MessageDigest;
/* 传入参数:一个字节数组
* 传出参数:字节数组的 MD5 结果字符串
*/
public class MD5 {
public static String getMD5(byte[] source) {
String s = null;
char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f' }; // 用来将字节转换成十六进制表示的字符
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(source);
byte tmp[] = md.digest();
// MD5 的计算结果是一个 128 位的长整数,
// 用字节表示就是 16 个字节
char str[] = new char[16 * 2]; // 每个字节用十六进制表示的话,使用两个字符,
// 所以表示成十六进制需要 32 个字符
int k = 0;
// 表示转换结果中对应的字符位置
for (int i = 0; i < 16; i++) { // 从第一个字节开始,将 MD5 的每一个字节
// 转换成十六进制字符
byte byte0 = tmp[i];
// 取第 i 个字节
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
// 取字节中高 4 位的数字转换,
// >>> 为逻辑右移,将符号位一起右移
str[k++] = hexDigits[byte0 & 0xf];
// 取字节中低 4 位的数字转换
}
s = new String(str);
// 将换后的结果转换为字符串
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
public static void main(String[] args) {
System.out.println(MD5.getMD5("http://topic.csdn.net/u/20110314/22/F40DDE47-4AD4-4E9E-B5CF-F24B1E343240.html".getBytes()));;
}
}
分享到:
相关推荐
在描述中提到的"MD5压缩算法源码 BCB 工程 + 源码",可能是指包含了一个用Borland C++ Builder (BCB)开发环境编写的MD5实现项目。BCB是 Borland 公司推出的一种C++集成开发环境,它提供了一套用于创建Windows桌面...
通常,会有一个类(如`MD5`)封装了上述过程,提供一个接口供外部调用,如`hash1`函数,这个函数接受一个字符串作为参数,返回该字符串的MD5摘要。 `MD5.H`文件则包含了MD5类的定义和相关函数声明。类的成员变量...
在VC++环境中实现MD5加密算法,开发者通常会创建一个包含四个32位整数的数组来存储中间结果,然后按照MD5的步骤逐步更新这个数组。同时,需要处理内存管理和输入数据的读取。在学习和参考提供的代码时,理解这些步骤...
它将任意长度的数据转化为一个128位(16字节)的固定长度输出,通常以32个十六进制数字表示。MD5的主要用途是验证数据的完整性和一致性,比如在文件传输、软件下载或者密码存储时。 MD5的工作原理基于分块处理和一...
在这个项目中,“用MFC实现的MD4压缩算法”是一个结合了MFC框架和MD4哈希计算的示例程序。用户可以在程序的输入框中输入任意字符串,然后点击MD4按钮,程序将计算出该字符串的MD4哈希值。这对于理解MFC如何处理用户...
MD5(Message-Digest Algorithm 5)是由Ron Rivest于1992年设计的一种散列算法,用于将任意长度的消息压缩成一个固定长度(128位)的散列值。这一过程是非可逆的,即无法通过散列值反推出原始消息。MD5算法主要包括...
总的来说,这个项目提供了一个在VC++环境中实现MD5算法的实例,包括了用户界面交互、字符串处理和MD5哈希计算,是学习和理解MD5算法的一个实用平台。通过阅读和分析源代码,开发者可以深入理解MD5的工作原理,并掌握...
尽管如此,在很多不需要高强度安全性的场合,MD5仍然是一个快速且实用的选择。 在压缩包中的"MD5算法的Java实现类"可能包含了上述的代码实现,你可以通过查看源码进一步理解MD5的Java实现细节。同时,也可以扩展这...
总的来说,C++实现的MD5算法是信息安全领域的一个重要工具,理解和掌握其原理和实现方法,对于从事软件开发、网络管理等工作都十分有益。通过阅读和研究提供的工程文件,你可以深入理解MD5的细节,并将其应用到自己...
MD5算法通过对输入消息的处理,能够生成一个128位的固定长度散列值。整个算法流程包括了初始化、消息填充、分组处理等多个步骤,旨在确保输出结果的一致性和安全性。尽管MD5在某些应用场景中已经被更安全的哈希算法...
MD5加密算法实现的源代码,vc++实现,如有错误请联系我!仅供参考学习!
在Verilog中实现MD5,你需要定义一个模块,这个模块接受输入数据流,并在完成所有处理后提供MD5摘要。模块可能会包含状态机来管理各个阶段,以及一系列的寄存器和算术逻辑单元(ALU)来执行MD5算法中的位操作和算术...
通常,这类代码会包含一个函数,接收一个字符串作为输入,返回该字符串的MD5摘要。 MD5虽然在安全性方面已经不再满足现代需求,因为它容易受到碰撞攻击,但作为学习哈希函数和位操作的基础,仍然具有教育意义。在...
对于输入的任一不定长度信息, MD5算法在对最后一块进行填充后用512个比特对其进行分组,使用压缩函数将其生成4个32比特的数据,合并为128比特的信息摘要。MD5实现的基本过程为填充,分块,缓冲区初始化,循环压缩,...
MD5的工作原理是通过一系列的数学运算,如位操作、异或、加法等,将输入的数据分割成固定大小的块,然后经过四个不同的处理阶段:初始化、压缩、扩展和混合,最终生成一个128位的摘要。这个过程确保了即使输入数据有...
在本项目中,"md5算法实例"可能是实现了一个简单的MD5计算功能,用户可以通过输入任何值,程序会返回这个值经过MD5算法处理后的哈希结果。这样的实例通常涉及以下编程知识点: 1. **哈希函数**:理解哈希函数的基本...
### 基于JAVA技术的MD5加密算法的设计与实现 #### 1. MD5算法概述 MD5(Message-Digest Algorithm 5)是一种广泛应用于数字签名、电子商务、信息加密等领域的散列算法。它能够将任意长度的消息压缩成一个固定长度...
在代码实现方面,MD5算法通常有C、C++、Java、Python等多种编程语言的实现。源代码会包括对原始数据进行预处理、执行四轮迭代以及最后形成固定长度摘要的步骤。预处理包括填充和添加一个附加位来确保输入的长度是512...
2. **压缩函数**: MD5算法中的压缩函数是非常重要的组成部分,它接收512位的消息块和当前的摘要状态作为输入,并输出一个新的摘要状态。 3. **轮次变换**: MD5算法共有四轮变换,每一轮包含16步。每一步都会根据特定...
MD5算法通过一系列复杂的数学运算(包括位操作、异或、加法等),将输入的消息(例如当前日期和一个编号)转化为一个固定长度的摘要。这个摘要对原始输入具有高度的唯一性,即使微小的输入改变也会导致完全不同的...