队伍编号: CICC1238 ,队伍名称:青稞ASIC小队。
SM4分组加密算法采用的是非线性迭代结构,以字为单位进行加密、解密运算,每次迭代称为一轮变换,每轮变换包括S盒变换、非线性变换、线性变换、合成变换。加解密算法与密钥扩展都是采用32轮非线性迭代结构。而解密算法与加密算法采用同一结构,只是轮密钥使用的顺序不同,加密采用顺序的,解密采用逆序的。
SM4加密算法是典型的分组密码算法,分组密码算法实质上就是在密钥的控制下,简单而迅速地找到一个置换,用来对明文进行分组加密变换。SM4加密算法由32次迭代运算和一次反序变换R组成。
设输入明文为(X0,X 1,X 2,X 3),共128位,设密文输出为(Y0,Y 1,Y 2,Y 3),轮密钥为rki,Xi、Yi、rki为字,i=0,1,2,…,31。则本算法的加密实现为:
本算法的解密实现与加密实现结构是相同的,不同的只是提供的轮密钥的使用次序。加密变换时使用轮密钥的顺序为:(rk0, rk1, …, rk31), 解密变换时使用轮密钥的顺序为:(rk31, rk30, …, rk0)。