密码学第11讲--IDEA算法.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
密码学第11讲--IDEA算法

IDEA分组密码算法 IDEA分组密码算法概述 Xuejia Lai和James Massey于1990年提出了PES (Proposed Encryption Standard,推荐加密标准)分组密码算法。为了抗击差分密码分析(系统地研究明文中的一个细小变化是如何影响密文的 ),设计者于1991年对PES作了改进,并将改进后的算法称为IPES(Improved Proposed Encryption Standard,改进型推荐加密标准)。IPES于1992年改名为IDEA(International Data Encryption Algorithm,国际数 据加密标准)。该算法类似于三重DES,发展IDEA因为DES存在密钥太短等缺点,IDEA密钥128位,它设计了一系列的加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。 算法的描述 分组长度:64比特 密钥长度:128比特 迭代圈数:8圈(每圈6个子密钥),附加一个输出变换(4 个子密钥)。 子密钥长度:16比特。52个子密钥由128比特初始密钥通过 密钥生成算法生成。 使用的三种基本运算:按位模2加;模216加法,模216+1乘法。 整个运算过程全部在16位子分组上进行,因此该算法对16位处理器尤其有效。 加密过程: 在每一轮中,执行的顺序如下: X1和第一个子密钥相乘 X2和第二个子密钥相加 X3和第三个子密钥相加 X4和第四个子密钥相乘 将第1步和第3步的结果相异或 将第2步和第4步的结果相异或 将第5步的结果与第五个子密钥相乘 将第6步和第7步的结果相加 将第8步的结果与第六个子密钥相乘 将第7步和第9步的结果相加 将第1步和第9步的结果相异或 将第3步和第9步的结果相异或 将第2步和第10步的结果相异或 将第4步和第10步的结果相异或 下节内容 分组密码小结 * * (一)子密钥生成算法 算法用了52个子密钥(8轮中的每一轮需要6个,其他4个用于输出变换)。首先,将128位密钥分成8个16位子密钥。这些是算法的第一批8个子密钥(第一轮的6个,第二轮的头两个)。然后,密钥向左环移25位后,再分成8个子密钥。开始4个用在第二轮,后面4个用在第三轮。密钥再次向左环移25位产生另外8个子密钥,如此进行直到算法结束。 具体是:首先把输入的key分成8个16位的子密钥,1-6号子密钥供第一轮加密使用,7-8号子密钥供第二轮使用,然后把这个128位密钥循环左移25位,这样key=k26k27k28…k24k25.把新生成的key在分成8个16位子密钥,1-4号子密钥供第二轮加密使用(前面已提供了2个)5-8号子密钥供第三轮加密使用。到此我们已经得到16个子密钥,如此继续,当循环左移了5次之后已经生产了48个子密钥,再次把key循环左移25位,选取划分出来的8个16位子密钥的前4个作为额外的输出变换加密密钥,这样供加密使用的总共52个子密钥生产完毕。 将待加密的64比特明文数据X分成4个16位组 ,作为算法第一圈的输入,总共有8轮。在每一轮中,这4个子分组相互相异或、相加、相乘,且与6个16位子密钥相异或、相加、相乘。在轮与轮间,第二个和第三个子分组交换。最后在输出变换中4个子分组与4个子密钥进行运算得到输出 ,级连起来即为密文Y。 (二)加密算法 每一轮的输出是第11、12、13、14步的结果形成的4个分组,将中间两个分组交换(最后一轮除外)后,即为下一轮的输入。经过8轮运算之后,有一个最终的输出变换: W81和第49个子密钥相乘 y1 W83和第50个子密钥相加 y2 W82和第51个子密钥相加 y3 W84和第52个子密钥相乘 y4 最后y1、y2、y3、y4重新连接到 一起产生密文。 所用符号的含义: xi(i=1, 2, 3, 4)是16比特明文子分组; yi(i=1, 2, 3, 4)是16比特密文子分组; zi (i=1,…,52)16比特圈子密钥; wi,j (i=1,2,...,8; j=1, 2, 3, 4 )是16比特中间结果; ⊕ 表示16比特的逐位异或运算; 表示16比特整数的模216加法运算; 表示16比特整数的模216+1乘法运算,其中全零子块用216代替。 64bit明文X 循环2 输出变换 循环8 循环1 64bit密文Y 子密钥生成算法 128bit密钥

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档