http://www.pediy.com/kssd/pediy04/kanxue202.htm
http://bbs.pediy.com/thread-181487.htm
http://bbs.pediy.com/thread-54897.htm
http://www.cnblogs.com/charlesblc/p/6130141.html
https://github.com/pod32g/MD5/blob/master/md5.c
MD5算法对输入任意长度的消息进行运算,产生一个128位的消息摘要,可以理解为什么叫做“消息摘要算法”(Message Digest Algorithm)。
一、算法过程。
1、数据填充
2、初始化变量
012345678ABCDEFFEDCBA9876543210
3、处理分组数据
4、输出
二、C语言实现
三、安全性
通过预先计算知道许多MD5的对应关系,存在数据库中,然后使用的时候反查。例如我知道'password'的MD5值是5f4dcc3b5aa765d61d8327deb882cf99,那么我就用一个数据库存起来,只要我看到5f4dcc3b5aa765d61d8327deb882cf99,我就知道这个是口令'password‘使用MD5处理之后的值,原来的口令就是'password'。MD5在身份鉴别系统中用于口令保护已经是很久了事情了,大部分黑客也有针对这种Hash方式准备相应的数据库进行反查,也就是彩虹表。
不要直接将原口令直接进行MD5运算,可以加入随机数。