信息安全-数字签名 - 图文 下载本文

广东工业大学计算机学院

第3章

abc举例:对字符串“abc”进行填充?[1] 二进制表示:01100001 01100010 01100011?[2] 消息长24,先填充一位1,然后填充423位0,共448位此时长度为0*512+448 Bits 32位?[3] 消息的长度24, 用十六进制表示为0X00000000 0000001832位?[4] 这时总长度为512位,分成16组,每组32位以十六进制表示如下: M[0]=61626380 M[1]=00000000

M[2]=00000000 …

M[14]=00000000 M[15]=00000018

2013-7-25

25

广东工业大学计算机学院

第3章

第2步初始化MD缓冲区参数

MD5中有四个32位被称作链接变量(chainingvariable)的整数参数,分别初始化为:

A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。

当设置好这四个链接变量后,就开始进入算法的四轮循环运算。第3步处理位操作函数

每次循环操作中需要用到四个位操作函数(非线性函数,每轮一个)。f(x,y,z)=(x&y)|((~x)&z)g(x,y,z)=(x&z)|(y&(~z))h(x,y,z)=x^y^zi(x,y,z)=y^(x|(~z))

其中X,Y,Z为32位整数,&是与,|是或,~是非,^是异或注:f是一个逐位运算的函数,即:如果x,那么y,否则z。函数h是逐位奇偶操作符。

2013-7-25

26

广东工业大学计算机学院

第3章

第4步主要变换

将上面四个链接变量复制到另外四个变量中:A到a,B到b,C到c,D到d。

主循环有四轮,每轮循环都很相似。第一轮进行16次操作。每次操作对a、b、c和d中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上a、b、c或d中之一。最后用该结果取代a、b、c或d中之一。

假设mj表示消息的第j个子分组(从0到15),ff(a,b,c,d,mj,s,ti) 表示a=b+((a+(f(b,c,d)+mj+ti)gg(a,b,c,d,mj,s,ti) 表示a=b+((a+(g(b,c,d)+mj+ti)hh(a,b,c,d,mj,s,ti) 表示a=b+((a+(h(b,c,d)+mj+ti)ii(a,b,c,d,mj,s,ti) 表示a=b+((a+(i(b,c,d)+mj+ti)<<其中s、ti是常数。这四轮(64步)是:

2013-7-25

27

广东工业大学计算机学院

第3章

?第一轮的16次操作如下:

ff(a,b,c,d,m0,7,0xd76aa478)ff(d,a,b,c,m1,12,0xe8c7b756)ff(c,d,a,b,m2,17,0x242070db)ff(b,c,d,a,m3,22,0xc1bdceee)ff(a,b,c,d,m4,7,0xf57c0faf)ff(d,a,b,c,m5,12,0x4787c62a)ff(c,d,a,b,m6,17,0xa8304613)ff(b,c,d,a,m7,22,0xfd469501)ff(a,b,c,d,m8,7,0x698098d8)ff(d,a,b,c,m9,12,0x8b44f7af)ff(c,d,a,b,m10,17,0xffff5bb1)ff(b,c,d,a,m11,22,0x895cd7be)ff(a,b,c,d,m12,7,0x6b901122)ff(d,a,b,c,m13,12,0xfd987193)ff(c,d,a,b,m14,17,0xa679438e)ff(b,c,d,a,m15,22,0x49b40821)

2013-7-25

?第二轮的16次操作如下:

gg(a,b,c,d,m1,5,0xf61e2562)gg(d,a,b,c,m6,9,0xc040b340)gg(c,d,a,b,m11,14,0x265e5a51)gg(b,c,d,a,m0,20,0xe9b6c7aa)gg(a,b,c,d,m5,5,0xd62f105d)gg(d,a,b,c,m10,9,0x02441453)gg(c,d,a,b,m15,14,0xd8a1e681)gg(b,c,d,a,m4,20,0xe7d3fbc8)gg(a,b,c,d,m9,5,0x21e1cde6)gg(d,a,b,c,m14,9,0xc33707d6)gg(c,d,a,b,m3,14,0xf4d50d87)gg(b,c,d,a,m8,20,0x455a14ed)gg(a,b,c,d,m13,5,0xa9e3e905)gg(d,a,b,c,m2,9,0xfcefa3f8)gg(c,d,a,b,m7,14,0x676f02d9)gg(b,c,d,a,m12,20,0x8d2a4c8a)

28