MD5の初了解

来源:互联网 发布:淘宝卖家怎么拉黑买家 编辑:程序博客网 时间:2024/06/06 08:26

     

听到这个东西很久了,可是就不知道是如何实现的,借着学习Shiro认证的机会,我也了解了一下MD5,百度百科已经很给力了(先附上百度的图


  ),但是我想按照我的思维画个高清无码大图图,这样以后忘了的时候可以用这个帮助了解。以下是我自己画的图

参数

①初始化 A,B,C,D四个16进制数(每一个变量给出的数值是高字节存于内存低地址,低字节存于内存高地址,即大端字节序。在程序中变量ABCD的值分别为0x674523010xEFCDAB890x98BADCFE0x10325476)

②一个有16个数据的数组(s)(每个函数四个值)

③常数(4294967296*abs(sin(i))) i指的是弧度(i=1,2…64)(ti)

方法

四个方法依次是

F( X ,Y ,Z ) = ( X & Y ) | ( (~X) & Z )

G( X ,Y ,Z ) = ( X & Z ) | ( Y & (~Z) )

H( X ,Y ,Z ) =X ^ Y ^ Z

I( X ,Y ,Z ) =Y ^ ( X | (~Z) )

FF(a ,b,c ,d ,Mj ,s ,ti )操作为a = b + ( (a + F(b,c,d)+Mj + ti)<< s)

GG(a ,b ,c ,d ,Mj,s ,ti )操作为 a= b + ( (a + G(b,c,d) +Mj +ti) << s)

HH(a ,b ,c ,d ,Mj,s ,ti)操作为 a= b + ( (a + H(b,c,d) +Mj +ti) << s)

II(a ,b ,c ,d ,Mj,s ,ti)操作为 a= b + ( (a + I(b,c,d) +Mj +ti) << s)

        消息X通过MD5加密后的内容为a,b,c,d依次输出内容(注意次数输出的a,b,c,d是以大端节字序来表示的)


0 0
原创粉丝点击