对称加密——IDEA

0x01 IDEA 简介

​ IDEA(International Data Encryption Algorithm,国际数据加密算法),于1991年由XueJia Lai(来学嘉)和L. Massey提出。

​ 这种算法是在 DES 算法的基础上发展出来的,类似于三重 DES。发展 IDEA 也是因为感到 DES 具有密钥太短等缺点,已经过时。IDEA 的密钥为 128 位,这么长的密钥在今后若干年内应该是安全的。

0x02 IDEA 加解密过程

​ 总的来说 IDEA 的加密过程可以分为:子密匙生成、明文加密

一、子密匙生成

​ 选定一个 128 位(16 字节)密匙,再将其分为 8 个 16 位的子密匙,这 8 个子密匙就是第一批的 8 个子密匙。这 8 个子密匙循环左移 25 位,即可生成新的 128 位的密匙,重新分为 8 个子密匙,然后重复以上步骤,可得子密匙 56 个(最后 4 个无用,所以实际为 52 个)。

​ 这 52 个子密匙,依次每 6 个为一组,进行一轮加密,共进行 8 轮加密,最后剩余的 4 个子密匙与输出进行加密。

二、明文加密

​ 假定我们输入了一个 64 位的数据,将其分为 4 个 16 位明文分组:msg1、msg2、msg3、msg4 作为加密的第一轮输入。

​ 下面进行第一轮的加密,以下过程重复进行 8 轮,最后再与 4 个密匙进行运算即可得到密文。以下为个人理解中的代码:

#重复的加密过程
for i in range(8):
    middle1 = msg1 * key[0+i*6]		#key 即为我们得到的子密匙数列
    middle2 = msg2 + key[1+i*6]		#2+i*6 i 是表示第几轮的, 1 指示这一轮的第几个子密匙
    middle3 = msg3 + key[2+i*6]
    middle4 = msg4 + key[3+i*6]
    middle5 = middle1 ^ middle3
    middle6 = middle2 ^ middle4
    middle7 = middle5 * key[4+i*6]
    middle8 = middle6 + middle7
    middle9 = middle8 * key[5+i*6]
    middle10 = middle7 + middle9
    middle11 = middle1 ^ middle9    
    middle12 = middle3 ^ middle9
    middle13 = middle2 ^ middle10
    middle14 = middle4 ^ middle10
    msg1 = middle11		#得到下一轮的输入
    msg2 = middle12		#最后一轮是就是最后的输出
    msg3 = middle13
    msg4 = middle14
    
#最后的加密,得到最终的密文
enc1 = msg1 * key[48]
enc2 = msg2 * key[49]
enc3 = msg3 * key[50]
enc4 = msg4 * key[51]		#以上 enc 连接后即为最后得到的密文

三、解密

​ 解密的重点就是密匙,知道了密匙就可以逆向出子密匙,就可以解密密文。

0x03 参考

看雪:《加密与解密》(第三版)

国际数据加密算法_百度百科 (baidu.com)

(2条消息) IDEA数据加密算法介绍_caozuiba-CSDN博客

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值