您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 在DES中-如何从种子密钥生成轮密钥
“种子”密钥轮密钥特别注意:这里讲的数字都是指密钥的具体位置,而不是密钥的内容第A-1步取得密钥•从用户处取得一个64位(二进制位)长的密码口令key,key=k1k2k3…k63k64;•去除64位密码中作为奇偶校验位的第8、16、24、32、40、48、56、64位,剩下的56位作为有效输入密钥(“种子”密钥)。•置换:•就是将数码中的某一位的值根据置换表的规定,用另一位代替。第A-2步等分密钥•表1:输入密钥位序/A位序对照表注:表中每个单元格的数字是输入密钥位序,每个单元格的位置排序就是A位序,从左向右排,排完一行接着排下一行。5749413325179158504234261810259514335271911360524436•表2:输入密钥位序/B位序对照表6355473931231576254463830221466153453729211352820124•把在第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显示每一次迭代时密钥循环左移的位数。•比如在第1次迭代时密钥循环左移1位,第3次迭代时密钥循环左移2位...第9次迭代时密钥循环左移1位,第14次迭代时密钥循环左移2位。移位和循环移位:•移位就是将一段数码按照规定的位数整体性地左移或右移。循环右移就是当右移时,把数码的最后的位移到数码的最前头,循环左移正相反。例如,对十进制数码12345678循环右移1位(十进制位)的结果为81234567,而循环左移1位的结果则为23456781。•这里的循环移位,指的是前后28位密码的位置循环左移,比如•4942352821147423528211470•0504336292215循环左移一位5043362922158•815144373023————————1514437302316•169252453831925245383149第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)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套加密密钥:key[0],key[1],key[2],…。key[14],key[15]。•key[i]即是轮密钥。
本文标题:在DES中-如何从种子密钥生成轮密钥
链接地址:https://www.777doc.com/doc-6451645 .html