`
Virgo_S
  • 浏览: 1151138 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MD5

    博客分类:
  • JAVA
阅读更多

/**
 * MD5的算法在RFC1321 中定义
 * 在RFC 1321中,给出了Test suite用来检验你的实现是否正确: 
 * MD5 ("") = d41d8cd98f00b204e9800998ecf8427e 
 * MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661 
 * MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72 
 * MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0 
 * MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b 
 * 
 * @author haogj
 *
 * 传入参数:一个字节数组
 * 传出参数:字节数组的 MD5 结果字符串
 */
public class MD5 {
	public static String getMD5(byte[] source) {
		String s = null;
		char hexDigits[] = { // 用来将字节转换成 16 进制表示的字符
		'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd',
				'e', 'f' };
		try {
			java.security.MessageDigest md = java.security.MessageDigest
					.getInstance("MD5");
			md.update(source);
			byte tmp[] = md.digest(); // MD5 的计算结果是一个 128 位的长整数,
			// 用字节表示就是 16 个字节
			char str[] = new char[16 * 2]; // 每个字节用 16 进制表示的话,使用两个字符,
			// 所以表示成 16 进制需要 32 个字符
			int k = 0; // 表示转换结果中对应的字符位置
			for (int i = 0; i < 16; i++) { // 从第一个字节开始,对 MD5 的每一个字节
				// 转换成 16 进制字符的转换
				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 xu[]) { // 计算 "a" 的 MD5 代码,应该为:0cc175b9c0f1b6a831c399e269772661
		System.out.println(MD5.getMD5("a".getBytes()));
	}

}
分享到:
评论

相关推荐

    md5tools_md5_md5tools_

    MD5助手是一款强大的实用工具,专门用于生成和比对文件的MD5哈希值。MD5,全称为Message-Digest Algorithm 5,是由Ron Rivest在1991年设计的一种广泛使用的加密散列函数,产生一个128位(16字节)的散列值,通常以32...

    md5sum-code_md5sum_md5sum工具_

    MD5SUM工具是Linux环境下广泛使用的命令行工具,主要用于计算文件的MD5校验和。MD5(Message-Digest Algorithm 5)是一种广泛应用于数据完整性检验的哈希函数,它能将任意长度的数据转化为固定长度的摘要信息。这个...

    VB6 MD5算法_vb6md5_VB6MD5验签_vb6_VB6MD5算法_

    6. **MD5验签**:MD5验签是指预先计算好数据的MD5值并存储,之后在需要验证数据完整性的时刻,重新计算当前数据的MD5值并与预存的值进行比较。如果一致,则说明数据未被篡改。 7. **示例代码**:一个简单的VB6 MD5...

    MD5算法封装DLL MD5算法封装DLL MD5算法封装DLL

    使用MD5EncrypDLL时,开发人员需要按照DLL的接口调用这些函数,例如,先调用`MD5_Init`,然后多次调用`MD5_Update`传递要计算的数据,最后调用`MD5_Final`获取结果,再通过`MD5_ToString`将结果转换为字符串形式。...

    MD5 C++实现 对文件计算MD5值

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换成一个固定长度的输出,通常为128位,以16进制表示,即32个字符。在C++中实现MD5算法,主要是为了获取文件的数字指纹,...

    MD5编码、MD5加密解密demo

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换成固定长度的128位(16字节)摘要信息,通常表现为32位的十六进制数字。这个过程被称为MD5编码或MD5散列。在信息安全...

    MD5.cpp和MD5.h

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的输入数据转换为固定长度的128位(16字节)摘要,通常以32位十六进制数的形式表示。在C++编程中,MD5常常用于数据完整性校验、密码...

    md5加密,原生js使用md5加密

    MD5(Message-Digest Algorithm 5)是一种广泛用于数据安全的哈希函数,它能够将任意长度的数据转化为固定长度的128位(通常用32位的十六进制数字表示)摘要。在前端开发中,MD5常用于对敏感信息如用户密码进行加密...

    MD5 md5 md5加密

    `MD5.java`可能会包含一个`MD5`类,其中包含了计算MD5哈希的方法,而`MD5State.java`则可能封装了MD5算法中的状态变量和更新状态的逻辑,使得算法的实现更加模块化。 总的来说,MD5是一种曾经广泛应用于数据校验的...

    matlab实现md5算法,md5算法详解,matlab

    总结来说,MATLAB实现MD5算法涉及的主要知识点包括:MD5算法的背景和用途,哈希函数的基本概念,MD5算法的四轮循环结构,FF、GG、HH、II四个非线性函数的作用,以及MATLAB中位运算和数组操作的应用。通过学习这个...

    MD5加密解密生成器

    md5、md5(md5($pass))、md5(md5(md5($pass)))、MD5(MD5($pass)) MD5(MD5(MD5($pass)))、sha1、md4、mysql、mysql5、md5($pass.$salt) md5($salt.$pass)、md5(md5($pass)。$salt)、sha1...

    3d max md5mesh md5anim 导入 导出 插件

    在3D建模和游戏开发领域,MD5格式(Mighty Death Pixel)是一种常见的用于存储模型和动画数据的文件格式,尤其在基于id Software的Doom III引擎的游戏开发中广泛应用。这个格式允许开发者将3D模型和它们的关联动画...

    windows_md5sum_命令行计算文件md5

    在Windows操作系统中,有时我们需要验证文件的完整性和一致性,这时MD5校验和就显得尤为重要。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能将文件内容转化为固定长度的数字摘要,通常是一个32...

    PB9.0调用MD5加密示例,md5加密方法过程,PowerBuilder

    MD5(Message-Digest Algorithm 5)是一种广泛使用的加密散列函数,它产生一个128位(16字节)的散列值,通常以32位十六进制数字的形式表示。MD5常用于验证数据的完整性和保密性,比如在存储密码时。本篇将详细讲解...

    MD5转换小工具

    MD5(Message-Digest Algorithm 5)是一种广泛用于数据完整性校验和安全散列的算法。它由美国麻省理工学院的Ronald Rivest在1991年设计,主要用于确保数据在传输或存储过程中没有被篡改。MD5算法会将任意长度的数据...

    md5检测工具

    essage Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and ...

    MD5加密算法的JS文件md5-min.js

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,由计算机科学家Ronald Rivest在1991年设计。它能够将任意长度的数据转换为固定长度的输出,通常是一个128位的二进制数,通常用32个十六进制数字表示。...

    SparkMD5获取文件md5

    在IT领域,尤其是在数据处理和安全验证中,计算文件的MD5(Message-Digest Algorithm 5)哈希值是一项常用的技术。MD5是一种广泛使用的加密散列函数,它能够将任意大小的输入(也称为“预映射”或“消息”)转化为一...

    MFC获取MD5

    4. **计算MD5**:创建一个MD5上下文结构体`MD5_CTX`,然后调用`MD5_Init`、`MD5_Update`和`MD5_Final`函数。`MD5_Init`初始化上下文,`MD5_Update`将文件内容分块传入并更新MD5摘要,最后`MD5_Final`生成最终的MD5值...

    md5加密jar包

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,主要目的是为了产生一个固定长度的摘要,用于表示原始数据。在IT行业中,MD5主要用于数据校验、密码存储和文件完整性验证等方面。MD5加密jar包是将MD5...

Global site tag (gtag.js) - Google Analytics