SM4分组密码算法
创始人
2024-03-22 17:51:54
0

对称加密算法SM4

  • SM4算法介绍
  • 一、SM4加密流程
  • 二、轮函数F
    • 1.合成置换T
    • 3.非线性变换τ
    • 2.线性变换L
    • 4.加密的结果
  • 总结


SM4算法介绍

  • SM4.0于2013年3月被列为国家密码行业标准“GM/T 0002-2012《SM4分组密码算法》(原SMS4分组密码算法)”。2016年被列入国家标准(GB/T 32907-2016)
  • 在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与密钥长度均为128bit。加密算法与密钥扩展算法都采用32轮非线性迭代结构,采用非平衡Feistel。每一轮需要一个轮密钥。以字(32bit)为单位加密。
  • M4算法加/解密算法的结构相同,只是使用轮密钥相反,其中解密轮密钥是加密轮密钥的逆序。

一、SM4加密流程

下图是SM4的加密流程图以及SM4轮函数的示意图。
在SM4加密的过程中经过了32轮轮函数F。
在这里插入图片描述

二、轮函数F

X0,X1 ,X2 ,X3为128bit的输入
轮函数F(Xi,Xi+1 ,Xi+2 ,Xi+3) = Xi ⊕T(Xi+1 ⊕Xi+2 ⊕Xi+3⊕rki) 。轮函数F如上图所示
经过轮函数F之后会产生一个字的结果,执行32轮迭代之后会产生36个字(X0,X1 ,…,X32,X33,X34,X35)

1.合成置换T

T是一个可逆变换,由非线性变换τ和线性变换L复合而成。
T(A)=L(τ(A))

  • 非线性变换τ是由4个S盒组成的。
  • 非线性变换τ的输出是线性变换L的输入。
    其中输入A是32bit
    第i轮A的值为:A=Xi+1 ⊕Xi+2 ⊕Xi+3⊕rki

3.非线性变换τ

S盒中的数据采用的是十六进制来表示。四个S盒一共为32bit,每个S盒为8bit。
如S盒的输入如果是EF则输出结果是第E行第F列的值。
eg:输入:A = a0,a1 ,a2 ,a3;输出B=b0,b1 ,b2 ,b3
则(b0,b1 ,b2 ,b3)=τ(A)=(Sbox( a0),Sbox( a1),Sbox( a2),Sbox( a3))
(其中A为合成置换中的输入A:A=Xi+1 ⊕Xi+2 ⊕Xi+3⊕rki

2.线性变换L

c=L(B)=B⊕(B<<<2)⊕(B<<<10)⊕(B<<<18)⊕(B<<<24)
其中B是32位的数,输出仍是32位
输入B的值为非线性变换τ输出的32的值

B<< eg:B=123456。则 B<<<3 = 456123

4.加密的结果

32轮迭代后在最后会加上反序变换。
反序变换R:R(a0,a1 ,a2 ,a3)=(a3,a2 ,a1 ,a0)
密文为(Y0,Y1 ,Y2 ,Y3) =R(X32,X33 ,X34 ,X35)=(X35,X34 ,X33 ,X32)


总结

上面写的有点乱。
在EBC模式下SM4算法的流程如下:
SM4
如果有写的不对的地方欢迎指出!

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...