SM4分组密码算法

news2024/9/24 3:18:47

对称加密算法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<<<n:表示B循环左移n位,左边溢出的部分补到右边。
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
如果有写的不对的地方欢迎指出!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

blender assetBrowser 资产浏览器

文章目录简介.基础操作打开资产浏览器.标记资产.资产库位置设置与加载其他工程的资产库.为资产设置分类.设置资产的属性.根据类型筛选资产.标记材质为资产.标记天空盒材质为资产.标记动作为资产.简介. 1 类似于unity的预制体&#xff0c;可以直接从资产浏览器里拖出来 2 创建时…

什么是缓存架构,什么是后端分布式多级缓存架构,全文解析带你了解其中门道

文章目录浏览器缓存客户端缓存CDN缓存反向代理缓存本地缓存分布式缓存其他&#xff1a;缓存命中率缓存问题&#xff1a;缓存穿透缓存问题&#xff1a;缓存击穿缓存问题&#xff1a;缓存雪崩缓存问题&#xff1a;缓存一致性缓存的其他问题开篇01数据库缓存1.1.MySQL查询缓存1.2.…

CAS登录认证

CAS最基本的协议过程&#xff1a; 名词解释 Ticket Grangting Ticket(TGT) &#xff1a; TGT是CAS为用户签发的登录票据&#xff0c;拥有了TGT&#xff0c;用户就可以证明自己在CAS成功登录过。TGT封装了Cookie值以及此Cookie值对应的用户信息。用户在CAS认证成功后&#xff0c…

应用于供暖、供水管道等场景的一种智能控制阀

智能控制阀&#xff0c;顾名思义就是能够实现智能化控制功能的一种控制阀。它有什么用处呢&#xff1f; TSM-04V无线智能控制阀由锂亚电池供电、超长续航&#xff0c;具有无线远程配置功能&#xff0c;是一种高可靠性阀控设备。自带断码显示屏&#xff0c;可以查看设备的电量、…

在VScode中使用Jupyter Notebook的一些技巧

目录 一、VScode中Jupyter Notebook的优点 二、Cell命令模式目前支持的Jupyter Notebook快捷 三、Cell编辑模式下支持的Vscode快捷键&#xff08;只描述与编辑相关的那些快捷键&#xff09;​​​​​​​ 一、VScode中Jupyter Notebook的优点 1.写py代码和使用Notebook经常…

DBCO-SS-Mal,DBCO-SS-Maleimide,马来酰亚胺衍生物试剂特点分析

一、基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a; CAS号&#xff1a;N/A 中文名&#xff1a;二苯并环辛炔-二硫键-马来酰亚胺 英文名&#xff1a;DBCO-SS-Maleimide&#xff0c;DBCO-SS-Mal二、详细产品数据&#xff08;Detailed Product Data&#xf…

aws 整理和理解aws的虚拟化技术

资料 Introduce_to_virtualizationKVM I/O虚拟化AWS EC2 Virtualization 2017: Introducing Nitro从AWS转向KVM&#xff0c;再看KVM与XEN的技术路线之争 简单整理并了解下和aws相关的虚拟化技术 虚拟化技术 相关概念 Hypervisor Hypervisor是一种运行在物理服务器和操作系…

一文彻底搞懂什么是SSH中间人攻击(Man-in-the-middle attack)

文章目录【1】背景【2】中间人攻击原理登录报错信息提示从首次登录服务器说起中间人攻击原理重装服务器导致ssh无法登录的解决方案【3】如何避免中间人攻击&#xff1f;【4】什么是Known_hosts &#xff1f;known_hosts中的文件来自哪里&#xff1f;这个/etc/ssh/ssh_host_ecds…

gcc内联汇编

1. 介绍 用汇编编写的程序虽然运行速度快&#xff0c;但开发速度非常慢&#xff0c;效率也很低。如果只是想对关键代码段进行优化&#xff0c;或许更好的办法是将汇编指令嵌入到 C 语言程序中&#xff0c;从而充分利用高级语言和汇编语言各自的特点。但一般来讲&#xff0c;在…

华为机试_HJ81 字符串字符匹配【简单】【收藏!】

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 解题过程 提交代码 学习代码 收藏点 一、strstr函数 二、stdlib.h 描述 判断短字符串S中的所有字符是否在长字符串T中全部出现。 请注意本题有多组样例输入。 数据范围:1≤len(S),len(T)≤200 进阶&#xf…

如何解决“德语/文”等外文字符显示乱码问题

目录 1“德文/语字符”等外文显示乱码原因 2 如何解决“德文/语字符”等外文显示乱码 2.1 使用支持多个“编码”切换的工具打开该文本 2.2 使用变音字符的标准ASCII字符 2.3 将计算机系统切换至西欧编码 3 结尾 1“德文/语字符”等外文显示乱码原因 以德文/语为例&#…

vue3(二)

前一篇讲了 vue3的生命周期钩子的使用。 本节接着讲 vue3的数据通信。 provide/inject 依赖注入 App.vue <script setup lang"ts"> import { ref, provide } from vue import List from ./components/List.vue import User from ./components/User.vue impo…

知识点8--Docker镜像的秘密

前面的知识点我们介绍了docker的日常使用&#xff0c;但其实docker存在的核心意义是交付环境&#xff0c;也就是镜像&#xff0c;本片知识点带大家了解一下镜像的秘密。 镜像本身是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;包…

【Tensorflow学习二】神经网络优化方法学习率、激活函数、损失函数、正则化

文章目录预备知识tf.wheretf.random.RandomState.rand() 返回一个[0,1)之间的随机数np.vstack() 将数组按照垂直方向叠加np.mgrid[ ] np.ravel( ) np.c_[ ] 一起使用可以生成网格坐标点复杂度、学习率复杂度指数衰减学习率激活函数Sigmoid激活函数Tanh激活函数ReLu激活函数Leak…

今天面了个00后测试员,让我见识到了内卷届的天花板

深耕IT行业多年&#xff0c;我们发现&#xff0c;对于一个程序员而言&#xff0c;能去到一线互联网公司&#xff0c;会给我们以后的发展带来多大的影响。 很多人想说&#xff0c;这个我也知道&#xff0c;但是进大厂实在是太难了&#xff0c;简历投出去基本石沉大海&#xff0…

Linux安装KVM

一、虚拟化技术 1、全虚拟化和半虚拟化技术 如果给KVM、XEN简单归类的话&#xff0c;KVM是完全虚拟化技术又叫硬件辅助虚拟化技术&#xff08;Full Virtualization)。相反&#xff0c;XEN是半虚拟化技术&#xff08;paravirtualization&#xff09;&#xff0c;也叫做准虚拟化…

线上环境内存溢出-OutOfMemoryError

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 线上环境内存溢出-OutofMemoryError前言一、OutOfMemoryError是什么&#xff1f;二、实际情况&#xff08;参考&#xff09;解决方案1.实战总结前言 公司线上环境&#xff0…

getBoundingClientRect属性研究

getBoundingClientRect属性研究 概念 getBoundingClientRect 返回 width、height和下图中的6个属性 实测总结&#xff1a; 抓住一个核心点&#xff0c;就是height、width的值&#xff1a; box-sizing 是 content-box时&#xff0c;width和height 内容borderpaddingbox-siz…

国家级专新特精“小巨人”「皖仪科技」携手企企通,打造采购数字化平台成功上线

近日&#xff0c;安徽皖仪科技股份有限公司&#xff08;以下简称“皖仪科技”&#xff09;携手企企通共同打造的数字化采购管理系统成功上线。基于皖仪科技的采购业务流程和规则&#xff0c;形成全新的数字化采购体系&#xff0c;在推动企业降本增效的同时&#xff0c;实现企业…

单商户商城系统功能拆解42—应用中心—商城公告

单商户商城系统&#xff0c;也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法&#xff0c;例如拼团&#xff0c;秒杀&#xff0c;砍价&#xff0c;包邮…