信息摘要算法实现之MD5算法
来源:互联网 发布:时时彩记录软件 编辑:程序博客网 时间:2024/05/17 14:27
在计算机加密算法当中,主要存在对称密钥体制、非对称密钥体制公钥体系、消息摘要、以及数字签名等大类型的算法。其中消息摘要有两个主要算法,下文作简要介绍消息摘要中的MD5算法以及对MD5算法的使用。
在介绍MD5算法之前,先介绍下哈希函数。哈希函数(HASH)的运算原理为:任意输入一个任何长度的任何字符串,通过哈希函数运算之后返回一串固定长度的字符串,该字符串即称为HASH值,用于计算哈希值的单向HASH函数将用于产生目标信息摘要。使用HASH函数主要可以解决两个问题:第一,我们无法从经过哈希函数产生的哈希值反向计算出运算前的信息原文;第二,无法查找两个经HASH操作后生成相同HASH值的不同原文。因此利用哈希函数,在数字签名中就可以解决验证签名和用户身份验证、不可抵赖性的问题。
由于信息摘要能简要地描述了一份较长的信息或文件,因此信息摘要被称为“数字指纹”。对于某一个文件原文,产生的信息摘要是唯一的。同时,也由于我们无法逆向计算出原文,信息摘要也就不怕被公开,即使公开,也无法得到原文信息。
MD2,MD4和MD5算法就是一种被广泛使用的HASH函数,是由Ron Rivest 设计的专门用于加密处理的单散列函数,通过MD5算法运算之后将产生一个128位(16字节)的信息摘要,除非使用暴力破解,没能找到其他好的方法,而一般计算机运算能力暴力破解时间一般需要一千多年之久,因此MD5算法是一种优秀的加密算法。
以下是有关MD5算法的实现过程代码分析。
import java.security.MessageDigest;
public class MyMD5 {
public MyMD5() {
}
/**
* 计算一字符串MD5信息摘要
* @返回一个信息摘要
*/
public static String computeMD5(String inputStr) {
MessageDigest md5=null;
try {
//创建MD5函数对象
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
System.out.println(e.toString());
e.printStackTrace();
return "";
}
char[] charArray = inputStr.toCharArray(); //将字符串转换为字符数组
byte[] byteArray = new byte[charArray.length]; //创建字节数组
for (int i = 0; i < charArray.length; i++)
//将字符转换为字节
byteArray[i] = (byte) charArray[i];
//将得到的字节数组进行MD5运算
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer reMD5Str= new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++) ...{
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16)
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
}
//返回信息摘要结果字符串
return reMD5Str.toString();
}
}
<IFRAME name=google_ads_frame marginWidth=0 marginHeight=0 src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-0998670249567736&dt=1228647267703&lmt=1228647267&prev_slotnames=3416721708%2C3293545287%2C8789555629&output=html&slotname=2927280966&correlator=1228647266359&url=http%3A%2F%2Fwww.blogjava.net%2Fimproviser%2Farchive%2F2008%2F12%2F04%2F244468.html&ea=0&ref=http%3A%2F%2Fwww.blogjava.net%2F&frm=0&ga_vid=1775124913.1228647266&ga_sid=1228647266&ga_hid=1812613198&flash=9.0.124.0&u_h=1024&u_w=1280&u_ah=1024&u_aw=1239&u_cd=32&u_tz=480&u_his=2&u_java=true&dtd=47" frameBorder=0 width=468 scrolling=no height=15 allowTransparency></IFRAME>
以上即是有关JAVA加密算法中的信息摘要算法MD5的一些介绍跟使用与源码。
******************使用String的getBytes方法确比toCharArray好
- 信息摘要算法实现之MD5算法
- MD5信息摘要算法
- MD5(信息-摘要算法)
- MD5信息摘要算法
- MD5摘要算法实现
- RFC-1321 MD5信息-摘要算法
- 【RFC-1321】MD5信息摘要算法
- C#信息摘要算法(MD5)
- Java实现MD5消息摘要算法
- MD5摘要算法介绍及其实现
- MD5--信息摘要算法(2算法和扩展)
- MD5加密--(信息-摘要算法) 哈希算法之一
- MD5 报文摘要算法
- MD5摘要算法原理
- 摘要算法 SHA1 MD5
- MD5摘要算法
- MD5 摘要算法实例
- MD5摘要算法
- guestbook(源码)
- 前两天做了个java的小东西,作随想一篇
- Ubuntu下安装Vmware Tools
- Python 持久性管理
- 《关于STL中的list,vector,deque队列容器(written by Flower)》
- 信息摘要算法实现之MD5算法
- 《STL 中 vector deque list 的常见应用》
- 数据库系统概论学习笔记之一:数据库系统概述
- C++模板
- [转载]小窗终曲说策划
- 指向指针的指针的初始化
- 使用动态优先权的进程调度算法的模拟
- C++ string类使用、定义
- 备忘-使用spring进行远程访问