RISC-V技术论坛
直播中

刘高

11年用户 1039经验值
擅长:嵌入式技术
私信 关注
[经验]

SM4算法实现分享(一)算法原理

SM4分组加密算法采用的是非线性迭代结构,以字为单位进行加密、解密运算,每次迭代称为一轮变换,每轮变换包括S盒变换、非线性变换、线性变换、合成变换。加解密算法与密钥扩展都是采用32轮非线性迭代结构。而解密算法与加密算法采用同一结构,只是轮密钥使用的顺序不同,加密采用顺序的,解密采用逆序的。

SM4加密算法是典型的分组密码算法,分组密码算法实质上就是在密钥的控制下,简单而迅速地找到一个置换,用来对明文进行分组加密变换。SM4加密算法由32次迭代运算和一次反序变换R组成。


设输入明文为(X0X 1X 2X 3),共128位,设密文输出为(Y0Y 1Y 2Y 3),轮密钥为rkiXiYirki为字,i=0,1,2,…,31。则本算法的加密实现为:



本算法的解密实现与加密实现结构是相同的,不同的只是提供的轮密钥的使用次序。加密变换时使用轮密钥的顺序为:(rk0, rk1, , rk31), 解密变换时使用轮密钥的顺序为:(rk31, rk30, , rk0)。





更多回帖

发帖
×
20
完善资料,
赚取积分