MD5算法之C#程序 MD5算法描述
http://tech.ddvip.com 2006年11月18日 社区交流
本文详细介绍MD5算法之C#程序 MD5算法描述
当我要写一个MD5算法的程序时,发现中英文的语言描述都有一些不确切的地方,某些个细节
讲得不清楚,或者说很费解。最后不得不拿出C语言的源程序来调试,这对于理解算法是很不
利的。于是就总结了一下我摸索到的一些要点。
1.来历
MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory
for computer science和rsa data security inc的ronald l. rivest开发出来,
经md2、md3和md4发展而来。 http://www.ietf.org/rfc/rfc1321.txt ,是一份最权威的文档,
由ronald l. rivest在1992年8月向ieft提交。
2.用途
MD5的作用是对一段信息(message)生成信息摘要(message-digest),该摘要对该信息具有
唯一性,可以作为数字签名。用于验证文件的有效性(是否有丢失或损坏的数据),对用户
密码的加密,在哈希函数中计算散列值。
3.特点
输入一个任意长度的字节串,生成一个128位的整数。由于算法的某些不可逆特征,在加密应用
上有较好的安全性。并且,MD5算法的使用不需要支付任何版权费用。
4.说明
唯一性和不可逆性都不是绝对的,从理论上分析是一种多对一的关系,但两个不同的信息产生
相同摘要的概率很小。不可逆是指从输出反推输入所需的运算量和计算时间太大,使用穷搜字
典的方法又需要太多的存储空间。
5.算法描述
算法输入是一个字节串,每个字节是8个bit.
算法的执行分为以下几个步骤:
第一步,补位:
MD5算法先对输入的数据进行补位,使得数据的长度(以byte为单位)对64求余的结果是56。
即数据扩展至LEN=K*64+56个字节,K为整数。
作者:rufi 责编:豆豆技术应用