首页>审计>职业认证>ACL/IDEA认证培训> 正文

IDEA国际加密算法详解

2008-5-13 16:10  【 】【打印】【我要纠错

  产生密钥

  算法用了52个子密钥(8轮中的每一轮需要6个,其他4个用与输出变换)。首先,将128-位密钥分成8个16-位子密钥。这些是算法的第一批8个子密钥(第一轮六个,第二轮的头两个)。然后,密钥向左环移x位后再分成8个子密钥。开始4个用在第二轮,后面4个用在第三轮。密钥再次向左环移25位产生另外8个子密钥,如此进行直到算法结束。具体是:

  IDEA总共进行8轮迭代操作,每轮需要6个子密钥,另外还需要4个额外子密钥,所以总共需要52个子密钥,这个52个子密钥都是从128位密钥中扩展出来的。

  首先把输入的Key分成8个16位的子密钥, 1~6号子密钥供第一轮加密使用,7~8号子密钥供第二轮使用,然后把这个128位密钥循环左移25位,这样Key = k26k27k28…k24k25.

  把新生成的Key在分成8个16位的子密钥,1~4号子密钥供第二轮加密使用(前面已经提供了两个)5~8号子密钥供第三轮加密使用。到此我们已经得到了16个子密钥,如此继续,当循环左移了5次之后已经生成了48个子密钥,还有四个额外的子密钥需要生成,再次把Key循环左移25位,选取划分出来的8个16位子密钥的前4个作为那4个额外的加密密钥.供加密使用的52个子密钥生成完毕。

  输入的64-位数据分组被分成4个16-位子分组:xl,X2,x3和x4.这4个子分组成为算法的第一轮的输入,总共有8轮。在每一轮中,这4个子分组相互相异或,相加,相乘,且与6个16-位子密钥相异或,相加,相乘。在轮与轮间,第二和第三个子分组交换。最后在输出变换中4个子分组与4个子密钥进行运算。

  加、解密过程

  在每一轮中,执行的顺序如下:

  (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)步的结果相异或。

  每一轮的输出是第(11)、(12)、(13)和(14) 步的结果形成的4个子分组。将中间两个分组分组交换(最后一轮除外)后,即为下一轮的输入。

  经过8轮运算之后,有一个最终的输出变换:

  (1) X1和第一个子密钥相乘。

  (2) x2和第二个子密钥相加。

  (3) x3和第三个子密钥相加。

  (4) x4和第四个子密钥相乘。

  最后,这4个子分组重新连接到一起产生密文。

相关热词: IDEA 加密