目录
高级加密标准AES候选算法之一MARS
MARS是IBM公司提交的一个AES候选算法,它的特点是充分使用非平衡的Feistel结构。为了保证加解密的强度相当,MARS用结构类似的两部分组成。该算法是面向字运算的,所有内部操作均以32比特字为单位。
MARS的加密算法
如下图所示,加密过程由6部分组成,第1部分是密钥加(按32比特字加),第2部分是不受密钥控制的8轮前期混合运算,第3部分是密钥控制下的8轮前期加密变换,第4部分是密钥控制下的8轮后期加密变换,第5部分是不受密钥控制的8轮后期混合运算,第6部分是密钥减(按32比特字减)。
(1)前期混合运算
对128比特输入X=(X3,X2,X1,X0)进行下面的运算:
重复上述过程一次。
(2)前期加密变换
首先,我们给出E函数的定义,E函数是MARS的核心,它的输入是32比特的字X,输出是3个32比特的字(Y2,Y1,Y0)。
其中S是F29~F232的盒子,k和k'(要求k'是奇数)是子密钥,ROL(X,n)表示将X循环左移n比特,其中ROR(X,n)表示将X循环右移n比特。
前期加密变换是一种8轮的广义Feistel结构,第i轮的输人为4个32比特字X=(X3,X2,X1,X0),输出Y=(Y3,Y2,Y1,Y0)由下列式子计算:
(3)后期加密变换
后期加密变换也是一种8轮的广义Feistel结构,第i轮的输人为4个32比特字X=(X3,X2,X1,X0),输出Y=(Y3,Y2,Y1,Y0)由下列公式计算:
(4)后期混合运算
对128比特输入X=(X3,X2,X1,X0)进行下面的运算:
密钥扩展算法
扩展算法由下列4步构成。