专业财税服务推荐

精选优质财税服务,为企业提供专业、可靠的财税解决方案,助力企业健康发展

零报税代理记账
零申报代理记账
报税做账算帐财务报表老会计做账
代理记账
咨询微信:lhy_happyday
工商营业执照年度年报年检公示
全国个体、企业、公司、合作社工商年审年报服务!
个体/10元/次 企业/20元/次
咨询微信:lhy_happyday
财税咨询服务
一对一专业财税咨询,解决企业财税难题,提供定制方案
咨询微信:lhy_happyday
财务分析服务
小规模个体报税0申报税务年报工商年报月报季报报税代理记账
咨询微信:lhy_happyday
立即咨询专业财税顾问
微信号: lhy_happyday
会计从业9年,管理多家个体工商、小规模、一般纳税人等企业的财务、税务等相关工作!。
扫码或搜索添加微信,备注"财税咨询"获取专属优惠
知方号 知方号

SM4加密算法原理以及C语言实现 置换加密算法c语言pta

SM4加密算法原理以及C语言实现

文章目录 一.算法原理描述1.密钥及密钥参量:2.加密算法:3.解密算法:4.密钥扩展算法: 二.C语言算法实现.h部分代码:.c部分代码: 三. 感谢支持

一.算法原理描述

SM4分组密码算法是一个迭代分组密码算法,由加解密算法和密钥扩展算法组成。SM4分组密码算法采用非平衡Feistel结构,分组长度为128b(16byte)密钥长度为128b(16byte)。加密算法与密钥扩展算法均采用非线性迭代结构。加密运算和解密运算的算法结构相同,解密运算的轮密钥的使用顺序与加密运算相反。 (备注:一次性加密的数据长度为16字节,秘钥也为16字节,算法要求不可变。但可以自行补足字节来做到任意长度字节数据加密,后面C语言实现部分有所体现)

1.密钥及密钥参量:

SM4分组密码算法的加密密钥长度为128b,表示为MK=(MK0,MK1,MK2,MK3),其中MKi(i=0,1,2,3)为4bytes。

轮密钥表示为(rk0,rk1,···,rk31),其中rki(i=0,1,···,31)为32b。轮密钥由加密密钥生成。

FK=(FK1,FK2,FK3,FK4)为系统参数,CK=(CK0,CK1,···,CK31)为固定参数,用于密钥扩展算法,其中FKi(i=0,1,···,3),CKi(i=0,1,···,31)均为32b。

2.加密算法:

SM4加密算法由32次迭代运算和1次反序变换R组成

设明文输入为(X0,X1,X2,X3)∈(Z232)4,密文输出为(Y0,Y1,Y2,Y3)∈(Z232)4,轮密钥为rki∈Z232,i=0,1,···,31。加密算法的运算过程如下。

(1)首先执行32次迭代运算:

Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)=Xi XOR T(Xi XOR Xi+1 XOR Xi+2 XOR Xi+3 XOR rki),i=0,1,···31

(2)对最后一轮数据进行反序变换并得到密文输出:

(Y0,Y1,Y2,Y3)=R(X32,X33,X34,X35)=(X35,X34,X33,X32)。

其中,T:Z232→Z232一个可逆变换,由非线性变换τ和线性变换L复合而成,即T(·)=L(τ(·))。

非线性变换τ由4个并行的S盒构成。设输入为A=(a0,a1,a2,a3)∈(Z28)4,非线性变换τ的输出为B=(b0,b1,b2,b3)∈(Z28)4,即:

(b0,b1,b2,b3)=τ(A)=(Sbox(a0),Sbox(a1),Sbox(a2),Sbox(a3))。

设S盒的输入为EF,则经S盒运算的输出结果结果为第E行、第F列的值,即Sbox(EF)=0x84。

L是线性变换,非线性变换τ的输出是线性变换L的输入。设输入为B∈Z232,则:

C=L(B)=B XOR (B

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。