1、“种子”密钥 轮密钥,特别注意:这里讲的数字都是指密钥的具体位置,而不是密钥的内容,第A-1步 取得密钥,从用户处取得一个64位(二进制位)长的密码口令key ,key=k1k2k3k63k64; 去除64位密码中作为奇偶校验位的第8、16、24、32、40、48、56、64位,剩下的56位作为有效输入密钥(“种子”密钥)。,置换: 就是将数码中的某一位的值根据置换表的规定,用另一位代替。,第A-2步 等分密钥,表1: 输入密钥位序/ A位序对照表,注:表中每个单元格的数字是输入密钥位序,每个单元格的位置排序就是A位序,从左向右排,排完一行接着排下一行。,表2: 输入密钥位序/ B位序对照表,
2、把在第A-1步中生成的56位输入密钥分成均等的A、B两部分,每部分为28位。不是简单地前后一分为二,而是参照表1和表2把输入密钥的值填入相应的位置。 按照表1所示,A的第一位为输入的64位密钥的第57位,A的第2位为64位密钥的第49位,依此类推,A的最后一位第28位是64位密钥的第36位。这样,形成了A、B两部分: k=k1k2k3.k55k56 A=k57k49k41.k44k36 B=k63k55k47.k12k4,第A-3步 密钥移位,表3: 每次迭代时密钥循环 左移的位数,DES算法的密钥是经过16次迭代(循环左移)得到一组密钥的,把在第A-1步中生成的A、B视为迭代的起始密钥,表3
3、显示每一次迭代时密钥循环左移的位数。 比如在第1次迭代时密钥循环左移1位,第3次迭代时密钥循环左移2位.第9次迭代时密钥循环左移1位,第14次迭代时密钥循环左移2位。,移位和循环移位:,移位就是将一段数码按照规定的位数整体性地左移或右移。循环右移就是当右移时,把数码的最后的位移到数码的最前头,循环左移正相反。例如,对十进制数码12345678循环右移1位(十进制位)的结果为81234567,而循环左移1位的结果则为23456781。 这里的循环移位,指的是前后28位密码的位置循环左移,比如49 42 35 28 21 14 7 42 35 28 21 14 7 00 50 43 36 29 2
4、2 15 循环左移一位 50 43 36 29 22 15 88 1 51 44 37 30 23 1 51 44 37 30 23 1616 9 2 52 45 38 31 9 2 52 45 38 31 49,第A-4步 密钥的选取,在第A-3步中第 i 次迭代生成的两个28位长的密钥为: A(i),B(i) A(i)=A(i)1A(i)2A(i)3.A(i)27A(i)28 B(i)=B(i)1B(i)2B(i)3.B(i)27B(i)28,移位后重新排序,把A(i),B(i)合并,得: C(i)=A(i)B(i)=A(i)1A(i)2A(i)3.A(i)27A(i)28B(i)1B(i
5、)2B(i)3.B(i)27B(i)28=C(i)1C(i)2C(i)3.C(i)55C(i)56,表4: 56位密钥C的位序与加密密钥K的位序对照表:,缺少了 9、18、22、25、35、38、43、54这八位。,按照表4所示k的第一位为56位密钥的第14位,k的第2位为56位密钥的第17位,。,依此类推,k的最后一位第48位是56位密钥的第32位。 这样,就生成了一个48位使用密钥: k(i)=C(i)14C(i)17C(i)11.C(i)29C(i)32=k(i)1k(i)2k(i)3.k(i)47k(i)48,第A-5步 迭代,DES算法密钥生成需要进行16次迭代,在完成16次迭代前,循环执行第A-3步和第A-4步,最终形成16套加密密钥:key0,key1,key2,。key14,key15。 key i 即是轮密钥。,谢 谢!,