sm2和sm4加密算法浅析

article/2025/8/21 16:11:22

sm2和sm4加密算法浅析

一: SM2

简介:SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法 ,SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。

SM2和RSA算法比较

C:\Users\hwlb\AppData\Local\Temp\1592545292805

SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小

①:加密算法以及流程:

输入:需要发送的消息为比特串M,klen为M的比特长度。

1.用随机数发生器产生随机数k∈[1,n-1],k的值为1到n-1

2.计算椭圆曲线点C1=[k]G=(x1,y1),将C1的数据类 型转换为比特串

3.计算椭圆曲线点S=[h]PB,若S是无穷远点,则报错并退出

4.计算椭圆曲线点[k]PB=(x2,y2),按本文本第1部分4.2.5和4.2.4给出的细节,将坐标x2、y2 的 数据类型转换为比特串

5.计算t=KDF(x2 ∥y2, klen),若t为全0比特串,则返回A1

6.计算C2 = M ⊕t

7.计算C3 = Hash(x2 ∥ M ∥ y2)

8.输出密文C = C1 ∥ C2 ∥ C3

加密算法流程:
在这里插入图片描述

②:解密算法以及流程

klen为密文中C2的比特长度,对密文C=C1 ∥ C2 ∥ C3 进行解密,需要实现以下步骤

1.从C中取出比特串C1,按本文本第1部分4.2.3和4.2.9给出的细节,将C1的数据类型转换为椭 圆曲线上的点,验证C1是否满足椭圆曲线方程,若不满足则报错并退出

2.计算椭圆曲线点S=[h]C1,若S是无穷远点,则报错并退出

3.计算[dB]C1=(x2,y2),按本文本第1部分4.2.5和4.2.4给出的细节,将坐标x2、y2的数据类型转 换为比特串

4.计算t=KDF(x2 ∥y2, klen),若t为全0比特串,则报错并退出

5.从C中取出比特串C2,计算M′ = C2 ⊕t

6.计算u = Hash(x2 ∥ M′ ∥ y2),从C中取出比特串C3,若u ̸= C3,则报错并退出
7.输出明文M′

解密算法流程:
在这里插入图片描述

③:SM2椭圆曲线公钥密码算法推荐曲线参数

椭圆曲线方程:y2 = x3 + ax + b。

曲线参数:

p=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF a=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC b=28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93 n=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123 Gx=32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7 Gy=BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0

二:SM4

简介:SM4由国家密码管理局于2012年3月21日发布,SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

算法定义:该算法的分组长度为 128 比特,密钥长度为 128 比特。加密算 法与密钥扩展算法都采用 32 轮非线性迭代结构。解密算法与加密算法的结构相同,只是轮 密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序

(1)基本运算:

​ ⊕ 32 比特异或

​ i 32比特循环左移 i 位

(2)密钥及密钥参量 :
在这里插入图片描述

(3)轮函数 F:
在这里插入图片描述

(4)合成置换 T:
在这里插入图片描述
(5) 非线性变换τ
在这里插入图片描述

(6): 线性变换 L
在这里插入图片描述
(7):S 盒
在这里插入图片描述

(8)加/解密算法
在这里插入图片描述
(9):密钥扩展算法
在这里插入图片描述

00070e15, 1c232a31, 383f464d, 545b6269, 
70777e85, 8c939aa1, a8afb6bd, c4cbd2d9,
e0e7eef5, fc030a11, 181f262d, 343b4249, 
50575e65, 6c737a81, 888f969d, a4abb2b9, 
c0c7ced5, dce3eaf1, f8ff060d, 141b2229, 
30373e45, 4c535a61, 686f767d, 848b9299,
a0a7aeb5, bcc3cad1, d8dfe6ed, f4fb0209, 
10171e25, 2c333a41, 484f565d, 646b7279 

这边有个小demo:以供参考:https://download.csdn.net/download/kawayiyy123/12535104?spm=1001.2014.3001.5503


http://chatgpt.dhexx.cn/article/B8s4OfCP.shtml

相关文章

国密算法(SM2)简介及SM2生成秘钥

国密算法(SM2)生成秘钥 一、国密算法介绍二、SM2算法和RSA算法比较三、生成SM2秘钥1、openssl生成SM2秘钥1.1、安装openssl1.2、生成SM2私钥1.3、生成SM2公钥 2、nodejs:使用sm-crypto包生成SM2秘钥3、c生成秘钥 参考 一、国密算法介绍 国密即国家密码局…

向量积(叉积)

a和b叉积可表示为ab,结果是一个和这两个向量都垂直的伪向量 ab absinθ*n ,ab为两向量的模长,θ是两向量的夹角,n是垂直二者的单位向量。 叉积的长度可以理解为以ab为邻边的平行四边形面积 叉积的运算 反交换律 ab-ba 分配律…

向量的点乘(内积)和叉乘(外积)

向量点乘:a * b(常被写为a b) 点乘,也叫向量的内积、数量积.顾名思义,求下来的结果是一个数. 向量a向量b|a||b|cos 在物理学中,已知力与位移求功,实际上就是求向量F与向量s的内积,即要用点乘. 向量叉乘:a ∧ b(常被…

向量的内积(点乘)与外积(叉乘)

向量的内积(点乘)与外积(叉乘) 向量的内积点乘 向量的外积叉乘 向量的内积(点乘) 内积的几何意义: 用来表征或计算两个向量之间的夹角在b向量在a向量方向上的投影。 向量的外积(叉…

两向量的向量积

两向量的向量积 两向量 a 与 b 的向量积(外积)是一个向量,记做 a b \mathbf{a}\times \mathbf{b} ab 或 [ a b ] [\mathbf{a}\mathbf{b}] [ab],它的模是 ∣ a b ∣ ∣ a ∣ ∣ b ∣ sin ⁡ ∠ ( a , b ) |\mathbf{a}\times…

8.2 向量数量积与向量积(点乘与叉乘)

本篇内容依然是向量的运算,只不过不属于线性运算,内容包括向量的数量积与向量积。 一、向量的数量积(内积、点乘,参与运算的是向量,结果是数) (一)问题产生的背景与表达 &#x…

【口诀】巧记泰勒公式

函数 多项式函数 可以计算出精确值 非多项式函数 无法计算出精确值 泰勒公式的本质 多项式函数逼近非多项式函数 随着项数累加,逼近的误差就会越小 规律: 只需要确定x的指数符号只有两种情况 要么符号相同(全为) 要么符号交替( -)开头要么1&am…

matlab泰勒公式含义,泰勒公式的哲学意义与敏捷研发

学过微积分的人都知道泰勒展开公式,它是将一个在x=x0处具有n阶导数的函数f(x)利用关于(x-x0)的n次多项式来逼近函数的方法,用标准的数学术语来描述是这样的:若函数f(x)在包含x0的某个闭区间[a,b]上具有n阶导数,且在开区间(a,b)上具有(n 1)阶导数,则对闭区间[a,b]上任意一点…

泰勒公式及泰勒级数

目录 一、背景二、提出问题三、解决问题四、应用——泰勒级数※ 函数的幂级数展开 参考文献 一、背景 对于一些复杂的函数,通常会找简单的函数做近似,而多项式函数就是常用的一种简单函数。 比如当 ∣ x ∣ |x| ∣x∣ 很小时,有以下近似&a…

泰勒公式求极限(如何用+精度怎么确定)一文扫除泰勒公式难点

有些复杂的极限题,里面会涵盖着各种各样的函数,这些群魔乱舞的函数加大了我们计算极限的难度,此时想:如果可以将这些函数统一成一样的形式该多好?此时,就有我们的泰勒公式了。 1.泰勒公式怎么用: 指数函…

泰勒公式记忆方法

泰勒公式记忆方法 几个常见函数的泰勒公式 f ( x ) f ( x 0 ) f ′ ( x 0 ) ( x − x ) f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 ⋯ f ( n ) ( x 0 ) n ! ( x − x 0 ) n R n ( x ) f ( x ) f ( 0 ) f ′ ( 0 ) x f ′ ′ ( 0 ) 2 ! x 2 ⋯ f ( n ) ( 0 ) n ! x n o (…

理解高斯分布

开始前,先看几个重要概念: 概率函数:把事件概率表示成关于事件变量的函数 概率分布函数:一个随机变量ξ取值小于某一数值x的概率,这概率是x的函数,称这种函数为随机变量ξ的分布函数,简称分布…

透彻理解高斯分布

https://www.toutiao.com/a6639894224189784590/ 2018-12-28 12:22:15 正态分布是与中的定量现象的一个方便模型。各种各样的心理学测试分数和现象比如计数都被发现近似地服从正态分布。 开始前,先看几个重要概念: 概率函数:把事件概率表示成…

高斯分布的一些理解

转自:http://blog.csdn.net/rns521/article/details/6953591 正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学、物理及工程等领域都非常重要的概率分布,在统计…

高斯分布拟合

题目: 产生N个服从高斯分布的随机数,计算这些随机数的均值和方差,并与高斯分布的均值和方差比较,N100,1000,10000,100000 import matplotlib.pyplot as plt import scipy.stats as sta import numpy as npmu_True 5 #设置高斯…

高斯分布~

为什么MLE估计服从高斯分布的数据分布方差会估小? 因为MLE求方差是根据数据的均值,并不是分布的期望,因为会根据采样的偏差将均值拉到符合数据的地方,从而算出来的方差会变小。 从几何层面看高维高斯分布 主要看exp上的值&…

机器学习中的高斯分布

高斯分布与数据预处理:数据分布转换高斯分布与聚类:GMM高斯分布与异常检测高斯分布与马氏距离 高斯分布与数据预处理:数据分布转换 当我们上手一个数据集时,往往第一件事就是了解每个特征是如何分布的。特征分布指的就是某个特征在…

融合高斯分布

(一)数据融合 假设两个传感器的测量结果分别为和,对应的标准差分别为和。 如何根据这两组数据得到最优估计? 估计值取为两个传感器测量结果的线性组合,如下所示: 为了获得最优估计值,需要让估…

java高斯分布_高斯分布的生成

1. 如何生成高斯分布? 在java8中的实现采用了 Marsaglia polar method (Box–Muller的一种形式), 具体理论如下: 随机变量 服从 的均匀分布 计算 如果 , 接着计算, 否则转4 , </

正态分布(Normal distribution)又名高斯分布(Gaussian distribution)

正态分布&#xff08;Normal distribution&#xff09;又名高斯分布&#xff08;Gaussian distribution&#xff09;&#xff0c;是一个在数学、物理及工程等领域都非常重要的概率分布&#xff0c;在统计学的许多方面有着重大的影响力。 若随机变量X服从一个数学期望为μ、标准…