IDEA加解密

一.IDEA算法简介

专注于为中小企业提供网站设计制作、网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业歙县免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

    IDEA(International Data Encryption Alogrithm)是由瑞士苏黎士联邦工业大学的XueJiaLai和James L.Massey 于1991年提出的。IDEA使用128比特密钥,整个算法和DES相似,也是将明文划分成一个个64比特长的数据分组,然后经过几次迭代和一次变换,得出64比特的密文。

    IDEA是将两个16比特的值映射为一个16比特的值,这些操作是:

    ●  半加运算,即“异或”运算,用符号“⊕”表示。所谓的半加运算,就是在进行二进制运算时只加,不进位。

    ●  模216的加法运算(即mod 65536),用“+”表示。

    ●  模216+1乘运算用符号“⊙”表示。

    实际上,⊙是将两个输入的数进行乘法运算,然后再对此结果按模216+1运算得出的结果。对于这样的运算应该注意的是,参与运算的任何一个二进制数据n位,如果全是0,则用n+1位数据表示,且最高位为1,其余全为0。

    为了理解以上三种操作,我们用2位的数来表示以上的三种关系,如表2-3-1所示。

表2-3-1  IDEA三种操作的关系

X

 Y

 XY

 X⊙Y

 X⊕Y

 

十进制

 二进制

 十进制

 二进制

 十进制

 二进制

 十进制

 二进制

 十进制

 二进制

 

0

 00

 0

 00

 0

 00

 1

 01

 0

 00

 

0

 00

 1

 01

 1

 01

 0

 00

 1

 01

 

0

 00

 2

 10

 2

 10

 3

 11

 2

 10

 

0

 00

 3

 11

 3

 11

 2

 10

 3

 11

 

1

 01

 0

 00

 1

 01

 0

 00

 1

 01

 

1

 01

 1

 01

 2

 10

 1

 01

 0

 00

 

1

 01

 2

 10

 3

 11

 2

 10

 3

 11

 

1

 01

 3

 11

 0

 00

 3

 11

 2

 10

 

2

 10

 0

 00

 2

 10

 3

 11

 2

 10

 

2

 10

 1

 01

 3

 11

 2

 10

 3

 11

 

2

 10

 2

 10

 0

 00

 0

 00

 0

 00

 

2

 10

 3

 11

 1

 01

 1

 01

 1

 01

 

3

 11

 0

 00

 3

 11

 2

 10

 3

 11

 

3

 11

 1

 01

 0

 00

 3

 11

 2

 10

 

3

 11

 2

 10

 1

 01

 1

 01

 1

 01

 

3

 11

 3

 11

 2

 10

 0

 00

 0

 00

 

二.IDEA算法加密过程

1.IDEA迭代过程

    IDEA加密算法采用8次迭代,如图2-3-1所示:

图2-3-1  8次迭代

    64比特的密钥生成的数据被分成8个子块,每个子块16比特。每一次迭代过程如图2-3-2所示:

图2-3-2  单次迭代过程

    「说明」 图中⊕表示异或运算;表示模216的加法运算; ⊙表示模216+1的乘法运算。

    X1,X2,X3和X4作为第一次迭代的输入,每轮的迭代都是4个子块以及16比特子密钥间的异或运算,模216做加法运算和模(216+1)的乘法运算。

    迭代步骤如下:

    (1)X1和第一个子密钥块做乘法运算。

    (2)X2和第二个子密钥块做加法运算。

    (3)X3和第三个子密钥块做加法运算。

    (4)X4和第四个子密钥块做乘法运算。

    (5)(1)和(3)的结果做异或运算。

    (6)(2)和(4)的结果做异或运算。

    (7)(5)的结果和第五个子密钥块做乘法运算。

    (8)(6)和(7)的结果做加法运算。

    (9)(8)的结果与第六个子密钥块做乘法运算。

    (10)(7)和(9)的结果做加法运算。

    (11)(1)和(9)的结果做异或运算。

    (12)(3)和(9)的结果做异或运算。

    (13)(2)和(10)的结果做异或运算。

    (14)(4)和(10)的结果做异或运算。

    每轮完成以上的14次运算,共进行8轮,然后进行最后的输出变换,如图2-3-3所示。经过8轮迭代运算后,W81,W82,W83,W84分别与Z48,Z49,Z50,Z51运算得到Y1,Y2,Y3和Y4。其方法如下:

图2-3-3  8轮迭代变换后的输出变换

2.IDEA密钥生成过程

    在图2-3-3中可以看出,在加密过程中共有52个子密钥块参与运算,每个块长16比特。这52个密钥块是由128比特密钥产生的,我们将这52个密钥块记为Z0,Z1……,Z51。最初的8个子密钥Z0,Z1,……,Z7是直接来自用户输入,Z0是用户输入密钥的前16比特;Z1是用户输入密钥的第二个16比特,Z7是用户输入密钥的最后16比特。这样从Z0到Z7的密钥共计长度为128比特。

    IDEA每一轮迭代使用6个子密钥,每个子密钥有16位,这意味着在一轮迭代中,密钥中只有96位被使用。最初的6个连续的子密钥(Z0到Z5)直接用于第一轮迭代,然后128位的密钥要循环左移25位,之后再取密钥的前96位作为下一轮的6个子密钥。以此类推,直到8轮迭代全部完成。

3.IDEA解密算法与其加密的关系

    IDEA的解密处理和其加密处理基本相同,只是解密处理输入的是密文,选择的密钥不大相同,但也有一定的联系。它与加密密钥的关系如下。

    解密过程的第i轮前四个密钥是与加密过程中的第(10-i)轮的相同,最后置换作为第9轮。解密过程的第1和第4轮是对应加密处理过程第1轮和第4轮的模(216+1)乘运算,解密过程中的第2轮和第3轮对应与加密过程中的第3轮和第2轮的模216的加运算。

    在前8轮运算中,解密的第i轮的最后两个子密钥块等于加密过程中的第9-i轮的最后两个子密钥块。每一轮的加密和解密的子密钥关系如表2-3-2所示。

表2-3-2  加密和解密的子密钥关系

加解密轮次

 每轮的加密密钥

 原始密钥对应的位

 

第一轮

 Z0Z1Z2Z3Z4Z5

 Z48-1-Z49-Z50Z51-1Z46Z47

 

第二轮

 Z6Z7Z8Z9Z10Z11

 Z42-1-Z44-Z43Z45-1Z40Z41

 

第三轮

 Z12Z13Z14Z15Z16Z17

 Z36-1-Z38-Z37Z39-1Z34Z35

 

第四轮

 Z28Z19Z20Z21Z22Z23

 Z30-1-Z32-Z31Z33-1Z28Z29

 

第五轮

 Z34Z25Z26Z27Z28Z29

 Z24-1-Z26-Z25Z27-1Z22Z23

 

第六轮

 Z30Z31Z32Z33Z34Z35

 Z18-1Z20-Z19Z21-1Z18Z17

 

第七轮

 Z46Z37Z38Z39Z40Z41

 Z12-1Z14-Z13Z15-1Z10Z11

 

第八轮

 Z42Z43Z44Z45Z46Z47

 Z6-1-Z8-Z7Z9-1Z4Z5

 

最后的置换

 Z48Z49Z50Z51

 Z0-1-Z1-Z2Z3-1

 

    以上Zj与Zj-1及-Zj与Zj的关系为:


文章名称:IDEA加解密
网站URL:http://hbruida.cn/article/jopesh.html