预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10
亲,该文档总共25页,到这已经超出免费预览范围,如果喜欢就直接下载吧~
如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
1.概述DES(DataEncryptionStandard)算法一种用56位密钥来加密64位数据的方法。发明人:IBM公司W.Tuchman和C.Meyer.基础:1967年美国HorstFeistel提出的理论;产生:美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告,最终选定DES。DES技术特点分组加密算法:明文和密文为64位分组长度;对称算法:加密和解密除密钥编排不同外,使用同一算法;DES的安全性不依赖于算法的保密,安全性仅以加密密钥的保密为基础;密钥可为任意的56位数,具有复杂性,使得破译的开销超过可能获得的利益;采用替代和置换的组合,共16轮;只使用了标准的算术和逻辑运算,易于实现2.DES的基本工作流程2.DES的基本工作流程16轮加密开始先进行初始置换16轮加密结束后进行逆置换2.DES的基本工作流程SingleRoundofDESAlgorithm扩展置换E:将输入的32位块扩展到48位的输出块作用:它产生了与密钥同长度的数据进行异或运算它产生了更长的结果,使得在代替运算时能进行压缩操作:先把32位分成8个4位的块,第i块向左,向右各扩展一位,其中左扩展位与第i-1块的最右一位相同,右扩展位与第i+1块的最左一位相同。3.单轮加密详述压缩替代S(经过异或操作后)密钥与扩展分组异或以后,将48位的结果进行代替运算。替代由8个代替盒(S盒)完成。48位块通过S盒压缩到32位块。48位的输入被分为8个6位的分组,每一分组对应一个S盒代替操作:每一个S盒都有6位输入,4位输出,且这8个S盒是不同的。S盒操作DES中其它算法都是线性的,而S盒运算则是非线性的,S盒不易于分析,它提供了更好的安全性;所以,S盒是算法的关键所在。提供了密码算法所必须的混淆作用;改变S盒的一个输入位至少要引起两位的输出改变;P盒置换:P置换使得一个S盒的输出对下一轮多个S盒产生影响,形成雪崩效应:明文或密钥的一点小的变动都引起密文的较大变化雪崩效应AvalancheEffect明文或密钥的一比特的变化,引起密文许多比特的改变。如果变化太小,就可能找到一种方法减小有待搜索的明文和密文空间的大小。如果用同样密钥加密只差一比特的两个明文:000000000000000......00000000100000000000000......000000003次循环以后密文有21个比特不同;16次循环后有34个比特不同。如果用只差一比特的两个密钥加密同样明文:3次循环以后密文有14个比特不同,16次循环后有35个比特不同已知主密钥为64位(其中每个字节的第8位作为奇偶校验位)。略去奇偶校验位,DES的密钥由64位减至56位,对这56位密钥进行如下置换(置换选择1)经置换后的56位密钥,被分成左右两部分,每部分28位。循环左移每轮中,这两部分分别循环左移l位或2位。下表给出了每轮移动的位数。压缩置换(也称为置换选择2):将56位密钥压缩成48位。置换:例如,原第14位在输出时移到了第1位。压缩:第9、18、22、25以及第35、38、43、54均被略去。4.子密钥生成5.DES解密子密钥已知明文m=computer,密钥k=program,用ASCII码表示为:m=0110001101101111011011010111000001110101011101000110010101110010k=01110000011100100110111101100111011100100110000101101101因为k只有56位,必须插入第8,16,24,32,40,48,56,64位奇偶校验位,合成64位。而这8位对加密过程没有影响。m经过IP置换后得到L0=11111111101110000111011001010111R0=00000000111111110000011010000011密钥k通过PC-1得到C0=1110110010011001000110111011D0=1011010001011000100011100110再各自左移一位,通过PC-2得到48位k1=001111011000111111001101001101110011111100000110R0(32位)经E作用扩展为48位,100000000001011111111110100000001101010000000110再和k1作异或运算得到(分成8组)101111011001100000110011101101111110101101001