MD5原理

href="file:///c:%5cdocume%7e1%5cadmini%7e1%5clocals%7e1%5ctemp%5cmsohtml1%5c01%5cclip_filelist.xml" rel="file-list" /> href="file:///c:%5cdocume%7e1%5cadmini%7e1%5clocals%7e1%5ctemp%5cmsohtml1%5c01%5cclip_editdata.mso" rel="edit-time-data" />

MD5原理:

1、  填充

href="file:///c:%5cdocume%7e1%5cadmini%7e1%5clocals%7e1%5ctemp%5cmsohtml1%5c04%5cclip_filelist.xml" rel="file-list" />    原始消息  +  填充(1~512)  +   原始消息的长度LEN  => 要散列的数据(摘要)

注意;填充的位数等于512*n-64-原始消息的长度。

      填充总是增加的,即使原始消息的长度为448位,依然要填充512位,使长度变成960位。

      填充方法是一个1和多个0

      原始消息的长度表示为64位的值,若原始消息的长度超过64(即:大于264),则只用长度的低64位。

 

2、  将消息分成n512位的块。

3、  初始化链接变量

A十六进制01234567
B十六进制89ABCDEF
C十六进制FEDCBA98
D十六进制76543210

4、  处理块

(1)    4个链接变量赋值到4个变量

a=A         b=B        c=C        d=D

(2) 将当前512位的块分成16个子块,则每个子块为32

5、数据处理

(1) 16个输入子块分别设为M[0],M[1],M[2]……M[15],或表示为M[i]i=1~15

(2) 设一个包含64个元素的常量数组,表示为T[i]i=1~64T[i]32

(3) 按下图的过程对数据进行处理(数学表达式: a=b+(a+Process P(b,c,d)+M[i]+T[k])<<s  

 

  处理P

轮次              函数

1                                       (b  AND  c)  OR ( (NOT  b) AND  ( b ) )

2                                       (b  AND  d)  OR (c  AND  NOT  d)

3                                       b  XOR  c  XOR  d

4                                       c  XOR  (b  OR ( NOT  d))

      T[k]等于4294967296*abs(sin(k))所得结果的证书部分,其中k用弧度来表示。(这样做是为了通过正弦函数和幂函数来进一步消除变换中的线性)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值