【密码学】四、SM4分组密码算法

SM4是一种128位分组密码算法,采用非平衡Feistel结构,轮函数包括非线性S盒和线性变换。密钥扩展算法确保子密钥的独立性和安全性,整个算法设计注重混淆和扩散,抵抗各种密码分析攻击。

1、概述

SM4分组密码算法是一种迭代分组密码算法,采用非平衡Feistel结构,分组长度为128bit,
①Z2e表示e-比特的向量集,Z232中的元素称为字,Z28中的元素称为字节
②S盒为固定的8bit输入8bit输出的置换,记为Sbox()
③⊕表示2bit异或;<<<i表示32bit循环左移i位
④密钥及密钥参量
加密密钥长度位128bit,表示MK=(MK0,MK1,MK2,MK3),分别是字。
轮密钥rk是由加密密钥生成。
FK是系统参数,CK是固定参数,用于密钥扩展算法。

1.1初始变量算法

反序变换为R(A0,A1,A2,A3)=(A3,A2,A1,A0)
算法的加密变换为:Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi⊕T(Xi+1i⊕Xi+2i⊕Xi+3i⊕rki)
(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)
其中,F是轮函数,T是合成置换
加解密的结构相同,但是轮密钥的使用顺序不一样,加密的时候是0-31,解密的时候是31-0
加密流程图如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值