您好,欢迎访问三七文档
Hash算法2014.09.091•目录SHA-1原理消息认证Hash算法特点SHA-1、SM3对比2消息认证•定义:通过对消息或者消息有关的信息进行加密或签名变换进行的认证•作用:允许通信的当事人验证所接受的消息为可信消息。•消息认证技术中通常都会用到一类特殊的数学算法——哈希算法。3Hash算法•散列算法•作用:对任何不定长的比特串(消息),计算出一个定长的比特串(消息摘要或散列值)•常见Hash算法:SHA-1,MD5,SM34Hash算法特点•定长输出•单向性:对任意给定的码h,寻求x使得H(x)=h在计算上是不可行的•弱抗攻击性:任意给定分组x,寻求不等于x的y,使得H(y)=H(x)在计算上不可行•强抗攻击性:寻求对任何的(x,y)对使得H(x)=H(y)在计算上不可行5SHA-1•可以对长度不超过2^64比特的消息进行计算,输入以512位数据块为单位处理,产生160比特的消息摘要作为输出。SHA-1变换消息摘要输入输出小于2^64bit160bit6SHA-1算法描述•准备工作:把原始消息(如字符串、文件等)转换成bit序列。“abc”011000010110001001100011原始消息bit序列转换‘a’=0x61‘b’=0x62‘c’=0x637SHA-1算法描述•步骤1:补位。最高位补1,其余补0,使得数据位总长度对512取余的结果为448。011000010110001001100011原始序列补位后序列01100001011000100110001110000000000……0000000000024位补1位1,补423位0448位8SHA-1算法描述•步骤1:补位。最高位补1,其余补0,使得数据位总长度对512取余的结果为448。6162638000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000补位后的序列转换成16进制9SHA-1算法描述•步骤2:补长度。将原始数据的长度补到补位操作后的消息后面。61626380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018补位后的序列转换成16进制10SHA-1算法描述•步骤3:初始化缓冲区{Hi},160bit。H0=0x67452301H1=0xEFCDAB89H2=0x98BADCFEH3=0x10325476H4=0xC3D2E1F011SHA-1算法描述•步骤4:将步骤2得到的消息M以512bit分组。12/18M=M1||M2||…||Mi||…||Mn512bit512bit512bit512bitM=61626380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018M1例12SHA-1算法描述•步骤5:对于Mi进行以下处理•(1)将Mi分成16个字W0,W1,…,W1513/18M1=61626380000000000000000000000000W0W1W2W300000000000000000000000000000000W4W5W6W700000000000000000000000000000000W8W9W10W1100000000000000000000000000000018W12W13W14W1513SHA-1算法描述•步骤5:对于Mi进行以下处理•(2)扩展W16,W17,…,W79Wt=S1(Wt-3⊕Wt-8⊕Wt-14⊕Wt-16)(0≤t≤19)St(W)将W循环左移t位14SHA-1算法描述•步骤5:对于Mi进行以下处理•(3)令A=H0B=H1C=H2D=H3E=H415SHA-1算法描述•步骤5:对于Mi进行以下处理•(4)对于0≤t≤79,执行以下循环:TEMP=S5(A)+ft(B,C,D)+E+Wt+Ktft(B,C,D)=(B∧C)∨((¬B)∧D)(0≤t≤19)ft(B,C,D)=B⊕C⊕D(20≤t≤39)ft(B,C,D)=(B∧C)∨(B∧D)∨(C∧D)(40≤t≤59)ft(B,C,D)=B⊕C⊕D(60≤t≤79)16SHA-1算法描述•步骤5:对于Mi进行以下处理•(2)扩展W16,W17,…,W79Wt=S1(Wt-3⊕Wt-8⊕Wt-14⊕Wt-16)(0≤t≤19)St(W)将W循环左移t位17SHA-1算法描述•步骤5:对于Mi进行以下处理•(3)令A=H0B=H1C=H2D=H3E=H418SHA-1算法描述•步骤5:对于Mi进行以下处理•(4)对于0≤t≤79,执行以下循环:TEMP=S5(A)+ft(B,C,D)+E+Wt+Ktft(B,C,D)=(B∧C)∨((¬B)∧D)(0≤t≤19)ft(B,C,D)=B⊕C⊕D(20≤t≤39)ft(B,C,D)=(B∧C)∨(B∧D)∨(C∧D)(40≤t≤59)ft(B,C,D)=B⊕C⊕D(60≤t≤79)19SHA-1算法描述•步骤5:对于Mi进行以下处理•(4)对于0≤t≤79,执行以下循环:TEMP=S5(A)+ft(B,C,D)+E+Wt+KtA=H0,B=H1,C=H2,D=H3,E=H420SHA-1算法描述•步骤5:对于Mi进行以下处理•(4)对于0≤t≤79,执行以下循环:TEMP=S5(A)+ft(B,C,D)+E+Wt+KtKt=5A827999(0≤t≤19)Kt=6ED9EBA1(20≤t≤39)Kt=8F1BBCDC(40≤t≤59)Kt=CA62C1D6(60≤t≤79)21SHA-1算法描述•步骤5:对于Mi进行以下处理•(4)对于0≤t≤79,执行以下循环:TEMP=S5(A)+ft(B,C,D)+E+Wt+KtE=D;D=C;C=S30(B);B=A;A=TMP22SHA-1算法描述•步骤5:对于Mi进行以下处理•(5)上一步循环执行完成后,令H0=H0+AH1=H1+BH2=H2+CH3=H3+DH4=H4+E23SHA-1算法描述•步骤6:重复步骤5,对消息块M1…Mn进行处理。•处理完所有的Mn后,得到160bit消息摘要H0H1H2H3H4TEMP=S5(A)+ft(B,C,D)+E+Wt+KtE=D;D=C;C=S30(B);B=A;A=TMP24SHA-1与SM3对比SHA-1SM3输入≤2^64≤2^64输出160bit256bit填充添加1bit1、nbit0和64bit原始消息的长度,使得总长度是512的整数倍分组按512bit分组扩展将每一分组划分16个字W0…W15,再扩展W16…W79,共80个字将每一分组划分16个字W0…W15,再扩展W16…W63,共64个字压缩函数压缩成160bit压缩成256bit25•ThankYou!26
本文标题:HASH算法PPT
链接地址:https://www.777doc.com/doc-7182024 .html