IBM的MARS加密算法实现(2)

3/23/2008来源:软件工程人气:6355

作者:吴真

二、算法原理

密钥增加作为预白化处理,经8轮无密钥的向前混合,8轮有密钥的向前变换,8轮有密钥的向后变换,8轮无密钥的向后混合,以及作为后白化处理的密钥减法。16轮有密钥的转换称为密码核(cryptographic core),无密钥的迭代使用两个8x32 bit S-boxes、加、异或操作。此外,有密钥的迭代使用32-bit密钥乘法、数据相倚旋转和密钥加法。混合与核心迭代都被修改为Feistel结构的迭代,其中,1/4的数据块用于标识其它3/4的数据块。
约定:
D[] :存放4个32位明文的容器,在加密操作完成后用于存放密文
K[]:存放40个32位密钥的容器
S[]:s-box,512个32位的不同数组成,其中前256个由S0指出,后256个由S1指出
所有的数组下标从0开始计数.
本文中提及的加法是模232加,减法是模232减,乘法是模232乘
<<<表示循环左移
^ 表示按位异或
%取模