第一部分是变换运算,其方法是采用加法及乘法运算将4个16位的子明文分组与4个子密钥混合,产生4个16位的输出。具体的变换方法是:
(1)X1和第一个子密钥进行乘法运算。
(2)X2和第二个子密钥加法运算。
(3)X3和第三个子密钥加法运算。
(4)X4和第四个子密钥乘法运算。
然后将这4个16位输出进行两两配对,采用逻辑异或(XOR)运算将数据混合,产生2个16位的输出,即:将(1)和(3)的结果进行异或运算,将(2)和(4)的结果进行异或运算。这两个16位的输出,连同另外的两个子密钥成为第二部分的输入。
第二部分是用于产生扩散特性的乘加(MA)运算。MA运算生成2个16位输出。MA的输出再与变换运算的输出采用XOR运算产生4个16位的最后输出,这4个16位的最后输出即成为下一轮运算的原始输入。在这4个最后结果中的第2、3个输出是经位置互换而得到的,这样处理的目的是对抗差分分析攻击。
明文分组在经过8论加密后,再经过最后的输出变换形成正式的密文。最后的输出变换与前面每一轮的变换运算大致相同,惟一不同之处在于第2、3个输出是不需要经过位置互换的。这种特殊安排的目的在于可以使用与加密算法相同结构的解密算法进行解密,从而简化了设计及使用IDEA算法的复杂性。
图1 IDEA加密过程
|