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

article/2025/8/21 16:18:00

国密算法(SM2)生成秘钥

  • 一、国密算法介绍
  • 二、SM2算法和RSA算法比较
  • 三、生成SM2秘钥
    • 1、openssl生成SM2秘钥
      • 1.1、安装openssl
      • 1.2、生成SM2私钥
      • 1.3、生成SM2公钥
    • 2、nodejs:使用sm-crypto包生成SM2秘钥
    • 3、c++生成秘钥
  • 参考

一、国密算法介绍

国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。

  • SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

  • SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
    旧标准的加密排序C1C2C3 新标准 C1C3C2,C1为65字节第1字节为压缩标识,这里固定为0x04,后面64字节为xy分量各32字节。C3为32字节。C2长度与原文一致。

  • SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。

  • SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

二、SM2算法和RSA算法比较

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

算法名称SM2RSA
算法结构基本椭圆曲线(ECC)基于特殊的可逆模幂运算
计算复杂度完全指数级亚指数级
存储空间192-256bit2048-4096bit
秘钥生成速度较RSA算法快百倍以上
解密加密速度较快一般

三、生成SM2秘钥

1、openssl生成SM2秘钥

1.1、安装openssl

  • 下载安装包
    下载地址:http://slproweb.com/products/Win32OpenSSL.html
  • 安装
  • 设置环境变量
    在这里插入图片描述

1.2、生成SM2私钥

openssl ecparam -genkey -name SM2 -out priv.key

1.3、生成SM2公钥

./openssl ec -in priv.key -pubout -out pub.key

2、nodejs:使用sm-crypto包生成SM2秘钥

  • 此秘钥若给c++使用,需要把公钥的前两位04去掉。
const sm2 = require('sm-crypto').sm2
let keypair = sm2.generateKeyPairHex()
let publicKey = keypair.publicKey // 公钥
let privateKey = keypair.privateKey // 私钥

nodejs使用SM2加密、解密,参考sm-crypto

3、c++生成秘钥

	/* ecc_make_key() function.Create a public/private key pair.You must use a new nonpredictable random number to generate each new key pair.Outputs:p_publicKey  - Will be filled in with the point representing the public key.p_privateKey - Will be filled in with the private key.Inputs:p_random - The random number to use to generate the key pair.Returns 1 if the key pair was generated successfully, 0 if an error occurred. If 0 is returned,try again with a different random number.*/int ecc_make_key(EccPoint *p_publicKey, uint8_t p_privateKey[NUM_ECC_DIGITS], uint8_t p_random[NUM_ECC_DIGITS]);

C++SM2参见:c++国密算法SM2加密解密

参考

1.国密算法SM2介绍
2.sm-crypto
3.国密SM1、SM2、SM3、SM4算法资料大全
4.windows安装OpenSSL
5.openssl SM2签名密钥生成
6.在openssl中对SM2的公私钥进行加解密的验证
7.国密算法SM2加解密数据,解密出现异常
8.SM2 加解密注意事项


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

相关文章

向量积(叉积)

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服从一个数学期望为μ、标准…

数学基础--高斯分布

文章目录 一、简介二 、一元高斯分布三、多元高斯分布1、独立多元高斯分布2、多元相关变量高斯分布 一、简介 高斯分布是一种重要的模型&#xff0c;也被称作正态分布&#xff0c;其广泛应用与连续型随机变量的分布中。在数据分析领域中高斯分布占有重要地位。掌握高斯分布是学…