MD5概略说明

Home Home
引用 | 编辑 kenny_l_inux
2004-10-11 20:42
楼主
推文 x0
MD5 是什么?

《转贴自 石头闲语》


简单地说, MD5 是一种单向字串杂凑演算 (hashing) ,其可将你所给予的任何长度字串, 使用 MD5 杂凑演算法,得出一个长度为 128 位元 ( 16 个字元) 的计算结果, 以下以键值称之。

举例来说,你将 "ROCK" 这个字串,使用 MD5 演算的话,就会得到一个 128 位元的计算结果,以字串型式表示的话,则如同下行:

MD5 ("ROCK") = afeb717aa2a101f7f64840e0be38c171
用字串表示时,是把 128 位元的计算结果 (术语称之为 "digest code") ,转成十六进位码形式的字串,此字串需要 32 个字元空间 (即 256 位元)。

MD5 的其他说明条列如下:

固定的字串内容必定会得出一个固定的键值,而非每次都算出不同的。
这是一个单向的杂凑演算,意味着,它虽可每次都将同样的字串内容,算 出同样的键值,但它无法从键值反推算出原本的字串内容。
不同字串内容所演算出来的键值,有可能相同,但根据统计,重覆的机率小于百万分之一,以重覆率来说,是相当好的演算法。
演算速度快,对硬体的要求很低。
它可以演算任意长度的字串内容,而且能得出固定长度的键值。
就算字串内容只相差一个字,它也能算出完全不同的键值。
键值长达 128 位元,而且可接受任何长度的字串,就密码的安全性来讲,比过去常用的 DES 编码法还好。 DES 编码法,只能接受 8 个字元长度的字串,产生的键值只有 56 位元。
就最后两项,举个例子来验证,如下:

MD5 ("ROCK") = afeb717aa2a101f7f64840e0be38c171
MD5 ("RACK") = 1ece4bad0efe8b897c6e7f8bd101759f
MD5 ("ROCKY") = 6cd910740cbbbbd0f55238a93fba157d
MD5 ("Rock'S saying") = 7dca0df0dfa7f76b652e53daa4852640
最后要提的是, MD5 演算法,是由 RSA Data Security, Inc 公司所提出的。

如何取得 MD5 函数库
本人使用的 MD5 函数库,是取自 RSA Data Security 公司网站上,提供公开下载的版本,它只提供 C 语言原始码,不过不必担心编译的问题,根据我的测试,只要是 32位元的 C 语言编译器,都可以顺利编译,也没有作业系统平台的问题。

Ps. 我试过 gcc (win32, linux 及 freebsd) 及 borland c++ 5.0 (win32)

可以点取下列连结下载:

RSA Data Security, Inc.
我略做整理的原始码
此外,在某些作业系统中,例如 Freebsd ,由于内定采用 MD5 作为帐号密码的编码演算法,因此在系统中已内建 MD5 函数库,不须另外安装。

当你取得 RSA 的 MD5 原始码后,可以直接 make ,如果一切顺利,就会得到一个名叫 md5 的工具,这个工具,可以用来演算指定的档案内容或特定字串的键值。

这个工具非常好用,我略加说明使用方式。

如果你是要演算档案内容的键值,只要在指令 md5 后,直接加上档案名称做为参数即可,例如: md5 abc.zip ..

访客只能看到部份内容,免费 加入会员



献花 x1
引用 | 编辑 codeboy
2004-10-11 22:27
1楼
  
很好的说明喔...马上学起来~ 表情

献花 x0
引用 | 编辑 t2416
2004-10-15 21:34
2楼
  
说的还真深
看一下不懂
不过会使用就好了
感谢提供

献花 x0
引用 | 编辑 wang
2004-10-15 23:55
3楼
  
不好意思,新手请教各位大大一个简单的问题,
那有没有windows下可以使用的程式,
或者各位大大常用来检查MD5的小程式。
谢谢!

献花 x0
引用 | 编辑 小谢
2004-10-20 02:18
4楼
  
请问哪位大大
愿意提供MD5校验程式
因为小弟不是很董这部分
无法做出此程式
请会的大大提供一下谢谢

献花 x0
引用 | 编辑 lylinken
2004-10-20 03:32
5楼
  
ㄎㄎ
教导ㄉ很详尽
多谢ㄋ分享及指导
表情 表情 表情 表情

献花 x0
引用 | 编辑 hlc099
2004-10-30 18:44
6楼
  
真是感谢大大教学,受益良多

献花 x1
引用 | 编辑 无我
2004-12-23 22:06
7楼
  
看了半天...说实在还不是很懂..不过..至少有些概念了...

献花 x0
引用 | 编辑 rickysteed
2004-12-27 01:40
8楼
  
真是身傲 看来需要好几天的时间 才能消化完毕 感谢 你的细心讲解 让我又多学到一点

献花 x0
引用 | 编辑 hughman
2004-12-27 04:04
9楼
  
感谢分享这么详细的说明耶...又学到了好东西了.感谢喔 表情

献花 x0
引用 | 编辑 mnbmnb5266
2010-05-09 23:37
10楼
  
谢谢大大,我会好好看看的

献花 x0