MD5算法入门

发布时间:2016-12-10 20:49:49 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"MD5算法入门",主要涉及到MD5算法入门方面的内容,对于MD5算法入门感兴趣的同学可以参考一下。

1、介绍           MD5(Message Digest 5)消息摘要,此算法以任意长度的信息作为输入进行计算,产生一个128-bit(16-byte)的指纹或报文摘要(fingerprint or message digest)。MD5是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。     MD5还用在操作系统的登录认证上,系统中存放的是用户密码的MD5值,这样可以防止具有系统管理权限的用户查看密码。用户输入密码后,经过hash计算得到MD5值,与系统中存储的MD5值进行比较,如果相同,则可以登录,否则,不行。 2、 MD5算法步骤:      2.1 对字节填充 :Nx512+448bit   用1+无数个0填充,总共最少要补1bit,最多补512bit。      2.2 最后加上64位的二进制,表示填充的信息的长度  。信息长度 = Nx512+448+64 = (N+1)x 512,此时的数据长度是16个32位分组。     2.3 进行轮变换       四个链接变量         A = 0x1234567     B = 0x89abcdef     C = 0xfedcba98     D = 0x76543210        四个辅助函数         F(X,Y,Z) = XY v not(X) Z         G(X,Y,Z) = XZ v Y not(Z)         H(X,Y,Z) = X xor Y xor Z         I(X,Y,Z) = Y xor (X v not(Z)) NOTE:not(X)代表X的按位补运算,X v Y 表示X和Y的按位或运算,X xor Y代表X和Y的按位异或运算,XY代表X和Y的按位与运算。        四轮循环运算,循环的次数为(N+1)      Mj 消息表示第j个分组(0=<j<=15),ti表示2的32次方*abs(sin(i))      FF(a,b,c,d,Mj,s,ti)   a = b+((a+F(a,b,c)+Mj+ti)<<s)      GG(a,b,c,d,Mj,s,ti)   a = b+((a+G(a,b,c)+Mj+ti)<<s)      HH(a,b,c,d,Mj,s,ti)   a = b+((a+H(a,b,c)+Mj+ti)<<s)      II(a,b,c,d,Mj,s,ti)   a = b+((a+I(a,b,c)+Mj+ti)<<s)      完成之后,将A,B,C,D分布加上a,b,c,d,然后用下一组继续运行计算。      

上一篇:【Android】【转】文件保存与读取
下一篇:人格魅力

相关文章

关键词: MD5算法入门

相关评论