c语言如何实现idea算法

c语言如何实现idea算法,第1张

  摘要: IDEA即国际数据加密算法,也是目前使用广泛的一种算法。本文详细介绍了IDEA算法以及c语言如何实现idea算法,下面一起来看看原文。

  IDEA算法介绍

  IDEA,即国际数据加密算法。是旅居瑞士中国青年学者来学嘉和著名密码专家J.Massey于1990年提出的。它在1990年正式公布并在以后得到增强。这种算法是在DES算法的基础上发展出来的,类似于三重DES,和DES一样IDEA也是属于对称密钥算法。发展IDEA也是因为感到DES具有密钥太短等缺点,已经过时。IDEA的密钥为128位,这么长的密钥在今后若干年内应该是安全的。

  类似于DES,IDEA算法也是一种数据块加密算法,它设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。与DES的不同处在于,它采用软件实现和采用硬件实现同样快速。

  由于IDEA是在美国之外提出并发展起来的,避开了美国法律上对加密技术的诸多限制,因此,有关IDEA算法和实现技术的书籍都可以自由出版和交流,可极大地促进IDEA的发展和完善。但由于该算法出现的时间不长,针对它的攻击也还不多,还未经过较长时间的考验。因此,尚不能判断出它的优势和缺陷。

  IDEA算法特点

  类似于DES,IDEA算法也是一种数据块加密算法,它设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。与DES的不同处在于,它采用软件实现和采用硬件实现同样快速。

  由于IDEA是在美国之外提出并发展起来的,避开了美国法律上对加密技术的诸多限制,因此,有关IDEA算法和实现技术的书籍都可以自由出版和交流,可极大地促进IDEA的发展和完善。但由于该算法出现的时间不长,针对它的攻击也还不多,还未经过较长时间的考验。因此,尚不能判断出它的优势和缺陷。

  IDEA算法详解   1.产生密钥

  算法用了52个子密钥。首先,将128-位源密钥分成8个16-位子密钥。源密钥再次向左环移25位产生另外8个子密钥,如此进行直到产生完52个密匙。具体是:

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

  2.加密、解密过程

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

  注意上面的加法运算是对模2的16次方的加法运算,即求两个数的和对65536的余数,

  乘法运算是对模2的16次方加1的乘法运算,即两个数的积对65537的余数。

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

  (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个子分组重新连接到一起产生密文。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2717803.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存