首页
论坛
课程
招聘
[分享]IDEA算法
2021-9-13 17:15 9447

[分享]IDEA算法

2021-9-13 17:15
9447

目录

简介

密码类型:对称密钥分组密码
密钥:128bits
明文:64bits
轮次:8轮

IDEA中文叫做国际加密算法,最开始也被叫做Improved Proposed Encryption Standard (IPES)。它是一种对称密钥加密算法,最初是由James Massey 和 Xuejia Lai 在1991年提出的。

密钥生成流程

IDEA共使用了52个16位子密钥,该密钥由输入的128位密钥生成,过程如下:

  1. 输入128位密钥被分成8个16位的分组,并直接作为前8个子密钥使用。
  2. 128位密钥循环左移25位生成的128位密钥被分成8个16位的分组,作为接下来的8个子密钥。
  3. 重复上一步,直至52个子密钥全部生成。
    图片描述

加密流程

图片描述
IDEA 加密的数据块的大小为 64 比特,其使用的密钥长度为 128 比特。该算法会对输入的数据块进行 8 次相同的变换,只是每次使用的密钥不同,最后会进行一次输出变换。每一轮的操作
图片描述
可以输入和输出都是16比特位一组。每轮的主要执行的运算有:

  • 按位异或,⊕
  • 模加,模数为 2^16,⊞
  • 模乘,模数为 2^16+1,⊙。但是需要注意的是 0x0000 的输入会被修改为 2^16,2^16的输出结果会被修改为 0x0000。
    由 K5,K6 构成的中间那个方格的加密方式被称为 MA

在最后输出轮的操作如下
图片描述

解密流程

图片描述
解密流程与加密流程相似,主要在于其密钥的选取

  • 第 i(1-9) 轮的解密的密钥的前 4 个子密钥由加密过程中第 10-i 轮的前 4 个子密钥得出
  • 其中第 1 个和第 4 个解密子密钥为相应的子密钥关于 2^16+1 的乘法逆元。
  • 第 2 个和第 3 个子密钥的取法为
    • 当轮数为 2,...,8 时,取相应的第 3 个和第 2 个的子密钥的2^16的加密逆元。
    • 当轮数为 1 或 9 时,取相应的第 2 个和第 3 个子密钥对应的2^16的加密逆元。
  • 第 5 和第 6 个密钥不变。
    图片描述

【公告】 [2022大礼包]《看雪论坛精华22期》发布!收录近1000余篇精华优秀文章!

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回