首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

详解国密SM2的数字签名

在《解读国密非对称加密算法SM2》一文中,我讲到过非对称加密算法的用途之一就是数字签名。本文就来聊一聊国密SM2的数字签名算法。...在前面的文章我说过,SM2实际上就是一种椭圆曲线(EC)密码算法,所以这里先详细说说标准的ECDSA算法,然后再说说SM2数字签名算法和ECDSA算法有哪些差别。...验证签名: 将签名转化为两个数r和s,假如r和s小于1或者大于n-1,验证直接失败 计算c = (s)**-1 mod n 计算u1 = ((HASH(M)) * c) mod n 计算u2 = ((r...在现有的ECDSA算法基础上修改,增加对SM2签名算法的支持,相对比较容易,下面就说说SM2数字签名算法。...SM2数字签名算法 SM2数字签名算法在《GMT 0003.2-2012 SM2椭圆曲线公钥密码算法第2部分:数字签名算法》这份文档中有详细的描述。其中签名的流程为: ?

9.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

SM 国密算法踩坑指南

SM2算法 SM2 国密算法是一种非对称加密算法,基于 ECC(椭圆加密算法), SM2 算法对标我们常用的国际算法 RSA。 但是 SM2 算法由于基于 ECC,签名速度与秘钥速度都快于 RSA。...SM2 算法与 RSA 算法一样,可以用于数字签名,也可以用于加密场景,下面我们来看下数字签名场景下 SM2 算法原理。...SM2 数字签名算法 SM2 签名算法还是比较复杂,这里只截取数字签名的生成、验证算法原理。...详细文档可以搜索:『GB/T32918.2—2016 信息安全技术 SM2椭圆曲线公钥 密码算法 第2部分:数字签名算法sm2 加签 数字签名生成算法,即加签流程: 加签流程图如下: sm2 验签...数字签名验证算法,即验签流程: 验签流程图: SM2 签名数据 上面加签流程我们可以看到,SM2 加签之后产生的签名为(R,S),这一点与 RSA算法不同,RSA 算法加签之后签名就是一个值。

6K21

爬虫逆向基础,认识 SM1-SM9、ZUC 国密算法

【04x00】编程语言实现 【04x01】Python 语言实现 在 Python 里面并没有比较官方的库来实现国密算法,这里仅列出了其中两个较为完善的第三方库,需要注意的是,SM1 和 SM7 算法不公开...# dec_data: b'this is the data to be encrypted' SM2 签名(sign)和校验(verify): from gmssl import sm2, func...# verify: True 【04x02】JavaScript 语言实现 在 JavaScript 中已有比较成熟的实现库,这里推荐 sm-crypto,目前支持 SM2、SM3 和 SM4,需要注意的是...和解密(decrypt): const sm2 = require('sm-crypto').sm2 // 1 - C1C3C2,0 - C1C2C3,默认为1 const cipherMode =...// decryptData: this is the data to be encrypted SM2 签名(sign)和校验(verify): const sm2 = require('sm-crypto

1.9K20

国密算法「建议收藏」

算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。...SM2算法 SM2算法SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能...所以关于sm2算法的流程如图 SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。...另外,SM2推荐了一条256位的曲线作为标准曲线。 SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。...然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规则。

1.6K20

区块链密码基础之签名算法(一)

有些钱包设计中采用了一般语言的随机数生成,这样就会很容易被爆破,也就是我们所说的短地址攻击。比特币的地址生成如下图所示。...4.4 国密SM2替代 SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法,其中包含5个部分,总则、数字签名算法、密钥交换协议、公钥加密算法、参数定义。...4.4.1 SM2的参数选择 SM2选择的曲线方程和参数如下: 4.4.2 SM2签名算法 使用上面SM2椭圆曲线公钥密码算法推荐参数,提出了SM2签名算法可满足多种密码应用中的身份鉴别和数据完整性...SM2签名算法具体如下 图6 Bob以“同或门”为例对混淆电路进行解密 4.4.3 SM2和ECDSA的应用于区块链的比较 SM2和ECDSA都是使用椭圆曲线的签名算法,其思想来源都是来自于DSA,...s不同 签名的hash内容不同 SM2数字签名增加了合理性检查,检查r+k是否等于n SM2数字签名的s具有线性关系,可以构造特殊需求的签名 综合以上分析SM2签名算法与ECDSA算法相比较,虽然安全性在同一个级别上

1.4K10

Golang语言情怀--第81期 区块链技术-基于长安链建立NFT流程-通信数据数字签名使用

本期就给大家讲下,目前项目中数据签名算法的使用。我们使用的是SM2,不熟悉的可以去了解SM2的背景。...调用流程: ---- 签名算法SM2 功能描述:用于对各种接口行为的信息内容进行签名,并加入 timestamp 字段, 达到验证行为发起方身份、保证信息传输完整性和安全性的目的。 ...例如:”creators=testid&time=2022-05-16”  B)将上一步得到的字符串经过一次 sha256 计算得到哈希值 SignHash  C)将上一步得到 SignHash 用机构或用户的私钥进行签名得到签名值...C) 根据传入的信息构造成签名参数,对此信息进行签名签名逻辑已在上文 阐述,此处不再赘述),通过 SM2 验证算法对传入的签名进行验证。 .../ Golang语言情怀 ID:wwwGolangLtd  www.Golang.Ltd         游戏服务器架构丨分布式技术丨大数据丨Go语言学习

55210

长安链ChainMaker国密TLS设计与实现

国密TLS实现不完善,各语言版本支持现状参差不齐。 国密算法套件包括SM2签名SM2非对称加密、SM3杂凑函数(哈希)、SM4对称加密,以及一个国密密钥协商协议。...密码算法库 长安链密码算法库采用golang语言实现,目前支持主流国际密码算法AES、RSA、ECC以及SHA系列算法,并已经全面支持SM2、SM3以及SM4国密算法。...按PKCS8标准实现SM2私钥的编码序列化; 2. 按PKIX定义的公钥编码方式实现SM2算法公钥的序列化; 3. 实现ECC编码的SM2签名的序列化; 4....将SM2算法、SM3算法、SM2-SM3算法套件、SM2曲线的OID引入到X509的逻辑中。 完成了X509协议的国密支持后,进一步改造了TLS协议,主要包括: 1....支持 高性能国密库 实现:长安链开源的国密算法库目前支持tjfoc实现,与北大gmssl等使用C语言实现的密码库在性能上有一定差距,接下来我们会引入多种C语言实现,提升国密处理性能。 2.

1.5K20

写给开发人员的实用密码学 - 数字签名

先看看对称加密算法,A、B、C三个人共享一个对称加密算法密钥,A向B发送了一条消息,但是A可以抵赖说这条消息并不是他发送的,理由就是C也有同样的密钥,这条加密消息可能是C发送给B的,B无法向第三方证明是...国密数字签名算法 国密数字签名算法在《GM/T 0003.2-2012 SM2椭圆曲线公钥密码算法第2部分:数字签名算法》这份文档中有详细的描述。...国密 SM2 算法虽然也是一种椭圆曲线算法,但其签名流程和 ECDSA 有些不同,这点在实现时需要注意。...在开发SM2数字签名算法时,我们可以参考《GM/T 0003.2-2012 SM2椭圆曲线公钥密码算法第2部分:数字签名算法》这份文档中附录A的示例,保证每个步骤的数据能对上,这样最终的结果就不会出错。...国密数字签名示例 生成 SM2 私钥 $ gmssl sm2 -genkey -out sm2.pem Using configuration from /data/gmbrowser/usr/local

68930

sm2国密算法的纯c语言版本,使用于单片机平台(静态内存分配)

2010年底,国家密码管理局公布了我国自主研制的“椭圆曲线公钥密码算法”(SM2算法)。...国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,在金融领域目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。...SM2算法SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能...SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。...SM3算法:SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。

2.6K41

C语言算法-学习二

也就是 算法(algorithm) 一个程序除了 算法 和 数据结构 这两个要素外,还应当采用 结构化程序设计方法 进行程序设计,并用某一种 计算机语言 表示。...什么是算法 算法是为了解决问题而执行的一系列步骤。 计算机的算法可以分为两大类别: 数值运算算法 数值运算的目的是求数值解。 非数值运算算法 非数值运算用于事务管理领域(图书检索,人事管理等等)。...算法的目的是为了求解,“解”就是输出 有效性。算法中的每一个步骤都应当能有效地执行,并得到确定的结果 怎么表示一个算法 常用的方法有: 自然语言 流程图 NS图 伪代码 .........流程图表示算法 流程图是用一些图框来表示各种操作, 用图形表示算法,直观形象,易于理解。...image.png 以上面的例子做N-S图 image.png 用C语言表示算法 while循环 #include int main() { int a,i; a

2.6K30

sm2,sm3,sm4国密算法的纯c语言版本,使用于任何嵌入式平台

国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。 SM1 为对称加密。其加密强度与AES相当。...该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。...ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。 SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。...主要难点就是移植Miracl库,裁剪配置,测试加解密算法。针对不同平台如32位或64位,以及平台的大小端进行配置。 如果Miracl库移植ok了,那么基于Miracl库的sm2算法应没多大问题。...然后需要新建一个sm2.c文件、sm2.h,用于实现sm2功能函数;一个sm3.c文件、一个sm3.h文件,用于实现sm3功能函数(之所以要增加sm3的功能是因为sm2算法中需要sm3计算hash值功能

9.9K264

【密码学(3)】-国密系列1-SM2

SM2算法概念 SM2算法和RSA算法都是公钥密码算法SM2算法是一种更先进安全的算法,在我们国家商用密码体系中被用来替换RSA算法SM2为非对称加密,基于ECC。该算法已公开。...由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。...SM2数字签名算法签名过程示意图 (4)验证算法 接收到的消息为M′,签名为(r′, s′)和发送者Alice的公钥PA,Bob执行如下步骤验证合法性: 检验r′∈[1, n-1]是否成立,若不成立则验证不通过...SM2签名验证算法的一个显著特点是,其中加入了较多的检错功能。...验证算法中的①检查签名分量r’的合理性 验证算法中的②检查签名分量s’的合理性 验证算法中的⑤检查t的正确性 国密SM2算法证书VS传统SSL证书的优势 (1)加密强度更高 传统SSL证书通常是RSA算法

93740

解读国密非对称加密算法SM2

签名生成流程: ? 签名流程 签名验证流程: ? 验签流程 需要注意,上面只是总的流程,签名算法也有很多种,各种算法在实现上还是有很多不同,请根据需要再深入到具体的算法中。...说到这儿,和国密SM2算法有什么关系? 国密SM2算法 SM2算法就是一种ECC算法,准确来说,就是设计了一条ECC命名曲线。这算抄袭么?...对于大部分ECC操作来说,不需要该值,但在计算签名的时候会对n取模。 小结 本文从非对称密码算法开始,逐步介绍到国密SM2算法。...但这是否就已经完全实现了SM2算法呢?...也不是,因为SM2算法不仅用在加解密,还用在数字签名、密钥协商中,国密标准另外定义了数字签名算法、密钥交换协议、公钥加密算法,所以要把这些都实现完整,才算实现完全了国密SM2算法

4.2K20

SM2 (含SM3、SM4)国密算法工具QT版,彻底搞懂sm2算法的使用

网上有很多网友问算法SM2怎么使用?什么是压缩公钥和非压缩公钥?xB和yB这参数是什么?怎么使用SM2做加解密?如何签名和验签?有没有工具来验证下?...这里分享个自己用QT造的一个小工具,简单好用,同时也增加支持了SM3、SM4国密算法。且有详细的过程日志,可以保存为文件。用来对SM2国密算法做加解密和签名,验签,秘钥生成再合适不过了。...完整版的下载: sm2国密算法工具完整版,包含sm2,sm3和sm4-QT文档类资源-CSDN下载 工具源码的下载: sm2国密算法加解密、签名、验签QT工具源码(包含sm2,sm3和sm4源代码)-C...查阅《GMT 0003-2012》这份标准文档,有SM2算法的设计背景知识供解读。...SM2算法是ECC算法的一种,相当于是设计了一条ECC命名曲线。 为什么要大力推广国密算法,当然是因为安全了。

1.4K10

详解国密SM2的加密和解密

在上一篇文章《解读国密非对称加密算法SM2》介绍了国密非对称算法SM2,在文章中说到,如果现有的网络库中已经实现ECC算法,只需加入SM2命名曲线的参数即可。...这对于ECDHE密钥协商和ECDSA数字签名这两种用途而言确实是足够的。现有的网络库,很少将ECC算法直接用于加密和解密。...如何使用 SM2 算法进行加密和解密,可以参考的资料是《GMT 0003.4-2012 SM2椭圆曲线公钥密码算法第4部分:公钥加密算法》。...在A1步骤中,需要注意不能使用C语言中简单的随机数函数,因为这里 k 是一个很大的数字,有32字节,在GmSSL是用 BIGNUM 结构来表示的。...如果我们内部使用,当然可以根据它们各自的长度(对于指定SM2曲线和SM3哈希算法,x1, y1, C3的长度是固定的)来拆分,但这样不够灵活,万一换了命名曲线或哈希算法呢?

5.2K40

【易错概念】国密算法SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、ZUC

2 SM2椭圆曲线公钥密码算法(vs ECDSA、ECDH) SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。...另外,SM2推荐了一条256位的曲线作为标准曲线。 SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。...然后介绍了编程语言中的数据转换,包括整数和字节串,字节串和比特串,域元素和比特串,域元素和整数,点和字节串之间的数据转换规则。...在总则的基础上给出了数字签名算法(包括数字签名生成算法和验证算法),密钥交换协议以及公钥加密算法(包括加密算法和解密算法),并在每个部分给出了算法描述,算法流程和相关示例。...此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。在SM2,SM9标准中使用。

8.7K21

sm2和sm4加密算法浅析

sm2和sm4加密算法浅析 一: SM2 简介:SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法SM2为非对称加密,基于ECC。该算法已公开。...由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。...SM2和RSA算法比较 SM2性能更优更安全:密码复杂度高、处理速度快、机器性能消耗更小 ①:加密算法以及流程: 输入:需要发送的消息为比特串M,klen为M的比特长度。...= M ⊕t 7.计算C3 = Hash(x2 ∥ M ∥ y2) 8.输出密文C = C1 ∥ C2 ∥ C3 加密算法流程: ②:解密算法以及流程 klen为密文中C2的比特长度,对密文C=...u ̸= C3,则报错并退出 7.输出明文M′ 解密算法流程: ③:SM2椭圆曲线公钥密码算法推荐曲线参数 椭圆曲线方程:y2 = x3 + ax + b。

91220

1秒KO,被ChatGPT完虐……

国内还有能打的吗 GPT绝对是出道即巅峰 相较之下 百度文心一言不幸沦为背景板 发布会直接翻车 其实不是百度的问题 毕竟在大语言模型的AI领域 百度已经是最强的一个了 奈何对方太强 无论是投入成本还是效果...对标AES,算法不公开 如果不是从事涉密行业的同学 可能一辈子都接触不到 SM2 SM2是非对称算法的一种 有公钥和私钥 对标国际的RSA SM2的数学原理基于ECC椭圆曲线密码机制 具体过程很复杂...sm2=SmUtil.sm2(); SM2 sm2 = SmUtil.sm2(privateKey, publicKey); } } ---- 然后演示 公钥加密,私钥解密 public class...类似 MD5、SHA-256等 他具有单向加密的特点 无法逆推 主要用于数字签名、完整性效验、认证等功能 SM3 是在SMA-256基础上改进的一种算法 但复杂度远远提高 在防范碰撞攻击方面更具有优势...加盐的目的是增加干扰因素 摘要算法是不可逆的 通常仅用于验证结果 最常见的例如数字签名、密码加密存储等方面使用 SM4 SM4是一种对称加密算法 对标国外的DES算法 使用一个秘钥 可以加密和解密 而且要兼顾复杂度和性能

72020
领券