-
-
[分享]IDEA算法
-
发表于: 2021-9-13 17:15 17593
-
简介
密码类型:对称密钥分组密码
密钥:128bits
明文:64bits
轮次:8轮
IDEA中文叫做国际加密算法,最开始也被叫做Improved Proposed Encryption Standard (IPES)。它是一种对称密钥加密算法,最初是由James Massey 和 Xuejia Lai 在1991年提出的。
密钥生成流程
IDEA共使用了52个16位子密钥,该密钥由输入的128位密钥生成,过程如下:
- 输入128位密钥被分成8个16位的分组,并直接作为前8个子密钥使用。
- 128位密钥循环左移25位生成的128位密钥被分成8个16位的分组,作为接下来的8个子密钥。
- 重复上一步,直至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 个密钥不变。
赞赏
他的文章
- Android主流的污点分析工具 1535
- [翻译]“过滤-静音”操作:调查EDR内部通信 12034
- [翻译]Windows授权指南 5878
- [翻译]利用Android WebView漏洞 7896
- [翻译]伪造调用堆栈以混淆EDR 11402
看原图
赞赏
雪币:
留言: