本实验旨在探索和分析IDEA(国际数据加密算法)的工作原理及其安全性,通过编程实现其基本操作与测试。
64比特的数据被分为四个16比特的子块,在第一轮迭代中作为输入数据使用,并且整个过程包括8轮操作。
每一轮的操作步骤如下:
1. 第一个子密钥与第一个子块进行乘法运算。
2. 第二个子密钥与第二个子块进行加法运算。
3. 第三个子密钥与第三个子块进行加法运算。
4. 第四个子密钥与第四个子块进行乘法运算。
接着,将步骤1和步骤3的结果做异或操作;将步骤2和步骤4的结果相加以获得新的结果。然后用第五个子密钥对上述两个新结果分别执行一次乘法操作,并且再把这两个经过处理后的中间结果相加得到一个新的值。接下来是第六个子密钥与之前某一步骤的输出进行乘法运算,随后将此步骤产生的数据和前面获得的结果进行加法操作。
在每一轮迭代中:
- 将步骤1、5以及9的结果做异或操作。
- 将步骤3、7以及9的结果也作同样的处理。
- 步骤2与上一步得到的中间结果相加以生成新的输出值,同样地,对第4步进行相同的运算。
最后,在每一轮迭代中(除了最后一轮),将第二和第三子块的位置交换。在完成八次这样的循环后:
1. 第一个子密钥再次用于第一个子块的乘法。
2. 第二个子密钥与第二个子块相加。
3. 用第三个子密钥对第三个子块执行加法操作。
4. 最后,第四个子密钥和第四个原始数据进行一次乘法运算。
最终输出结果按照如下顺序:步骤11、步骤13、步骤12以及步骤14的计算成果。