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,然后用下一组继续运行计算。
   

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值