在《解读国密非对称加密算法SM2》一文中,我讲到过非对称加密算法的用途之一就是数字签名。本文就来聊一聊国密SM2的数字签名算法。...在前面的文章我说过,SM2实际上就是一种椭圆曲线(EC)密码算法,所以这里先详细说说标准的ECDSA算法,然后再说说SM2数字签名算法和ECDSA算法有哪些差别。...在现有的ECDSA算法基础上修改,增加对SM2签名算法的支持,相对比较容易,下面就说说SM2数字签名算法。...SM2数字签名算法 SM2数字签名算法在《GMT 0003.2-2012 SM2椭圆曲线公钥密码算法第2部分:数字签名算法》这份文档中有详细的描述。其中签名的流程为: ?...SM2签名流程 从中我们可以看到和标准ECDSA的流程有几点不同: 对消息的处理不同,国密签名算法对消息进行了处理,然后才计算摘要。
如果对你有帮助,麻烦点个在看或点个赞,感谢~ 国密SM2概述 对国密算法有了解的朋友看到SM2可能会先想到非对称加密,之前的SM4是对称加密。...SM4加解密使用的是同一个秘钥,而SM2使用的是非对称加密——公钥和私钥。公钥加密私钥解密。...签名和验签 主要为了防止消息被篡改,使用到了SM3。关于签名和验签,可以搜索更多的说明,加深理解。 使用Qt写的例子 ? 从上到下依次是私钥、公钥、明文、密文。
SM2 数字签名算法 SM2 签名算法还是比较复杂,这里只截取数字签名的生成、验证算法原理。...详细文档可以搜索:『GB/T32918.2—2016 信息安全技术 SM2椭圆曲线公钥 密码算法 第2部分:数字签名算法』 sm2 加签 数字签名生成算法,即加签流程: 加签流程图如下: sm2 验签...数字签名验证算法,即验签流程: 验签流程图: SM2 签名数据 上面加签流程我们可以看到,SM2 加签之后产生的签名为(R,S),这一点与 RSA算法不同,RSA 算法加签之后签名就是一个值。...SM2 签名一般有两种数据格式,国标(GM/T 0009-2012 SM2 密码算法使用规范)规定签名数据格式,使用** ASN.1** 格式定义,具体格式如下: 通常使用硬件加密机加签产生的数字数字签名将会使用这种格式...SM2 公私钥读取 SM2 如果用到数字签名,也用到加密的话,这个情况下我们就需要向 CA 机构,例如 CFCA,申请国密双证书。 CFCA 申请结果如下: SM2 双证书,分为签名证书,加密证书。
* 1.60、1.61版本的BC对SM2的结果为C1||C2||C3,据说为旧标准,新标准为C1||C3||C2,用新标准的需要自己转换。...result; } else { throw new RuntimeException("err rs: " + Hex.toHexString(rs)); } } /** * BC的SM3withSM2签名得到的结果的...public static final String SM4_ECB_PKCS5PADDING = "SM4/ECB/PKCS5Padding"; /** * cfca官网CSP沙箱导出的sm2...PublicKey publicKey = getPublickeyFromX509File(bais); // System.out.println(publicKey); // // sm2...bs));; // bs = sm4Decrypt(key, bs); // System.out.println(Hex.toHexString(bs)); String sm2
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算法相比较,虽然安全性在同一个级别上...而且由于SM2的签名参数s具有线性关系,可以结合区块链实际应用进行一些特殊需求的签名算法设计,满足区块链特殊的需求。
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]是否成立,若不成立则验证不通过...因为这是收信者对收到的签名数据进行验证,而签名数据是经过信道传输过来的,由于信道干扰和对手的篡改,因此,签名数据中含有错误或被篡改的可能性是存在的。...验证算法中的①检查签名分量r’的合理性 验证算法中的②检查签名分量s’的合理性 验证算法中的⑤检查t的正确性 国密SM2算法证书VS传统SSL证书的优势 (1)加密强度更高 传统SSL证书通常是RSA算法
国密数字签名算法 国密数字签名算法在《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...将待签名的消息放入 msg.txt 文件 $ echo "this is a sm2 test" > msg.txt 对消息签名 $ gmssl sm2utl -sign -in msg.txt
SM2 可以理解为国产RSA。非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。...SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。...使用经验 一般数据发送端都是用SM4对数据内容加密,使用SM3对内容进行摘要,再使用SM2对摘要进行签名。...与RSA算法相比,SM2算法在相同的安全强度下,所需的密钥长度更短,因此,在加密和签名速度上具有一定的优势。...国密算法工具封装包括: 非对称加密和签名:SM2 摘要签名算法:SM3 对称加密:SM4 国密算法需要引入Bouncy Castle库的依赖。
> ca.cert.pem 在CA主机上完成: 生成CA的SM2私钥 (ca.key.pem) 使用该私钥创建自签名的CA证书 (ca.cert.pem) CA证书有效期为10年 (3650天) 生成后...生成服务器的证书和密钥 pki --gen --type sm2 --outform pem > server.key.pem pki --pub --type sm2 --in server.key.pem...) 从私钥提取公钥 (server.pub.key.pem) 创建证书签名请求 (server.req.pem) 服务器将server.req.pem发送给CA进行签名。...) 从私钥提取公钥 (client.pub.key.pem) 创建证书签名请求 (client.req.pem) 客户端将client.req.pem发送给CA进行签名。...自签名CA: 在这个场景中,我们使用的是自签名的CA证书,而不是商业CA的证书。商业CA的根证书通常预装在操作系统或浏览器中,但自签名CA证书需要手动分发和安装。
SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。...SM2算法 SM2算法:SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能...所以关于sm2算法的流程如图 SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。...另外,SM2推荐了一条256位的曲线作为标准曲线。 SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。...SM2算法在很多方面都优于RSA算法(RSA发展得早应用普遍,SM2领先也很自然),与RSA安全性对比如下图 SM3算法 SM3算法:SM3杂凑算法是我国自主设计的密码杂凑算法,适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成
)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用...SM2算法:非对称算法其实现基于ECC算法。该算法已公开,由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。...SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。...SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高。...适用于商用密码应用中的数字签名和验证消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。 SM4算法: 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。
推荐几个网上测试sm2的网站: SM2加解密 SM2 在线加密工具 可以这样测试下: 用我的工具加密,使用同样的密钥,用网上的工具解密,看解密出来的明文是否正确。...解密结果如图所示: 再来测下验签: 用工具生成的签名,填入网站里去验签,看能否通过。结果是通过的。...图片 需要注意的是,如果使用网站上生成的签名,拿这个工具验签的话,需要在xB(公钥x的位置)最前面补上个02或03.否则会收到提示: ====sm2签名验证==== tips:目前仅支持压缩公钥,...SM2一般用到的或者第三方提供的公钥都是压缩过的,长度为66个长度,既33字节。其实yB不需要输入,有了xB的压缩公钥,yB工具自己就算出来了。
接收方使用发送方的公钥对签名进行解密和验证,以验证消息的完整性和真实性。在数字签名应用中,SM2算法通常与SM3摘要算法一起使用。...3) 用户A的明文数据和数字签名经加密算法(SM1/SM2/SM4)加密成密文后发送给用户B。加密算法以非对称加密算法SM2为例,即加解密使用不同密钥。...4)密文到达用户B处,经加密算法(SM1/SM2/SM4)解密后,还原成明文数据和数字签名。...2)在身份认证阶段,本端使用SM2和SM3算法生成身份信息的数字签名,并使用SM1或SM4算法和会话密钥对身份信息和数字签名进行加密;对端收到加密的身份信息后,使用相同的会话密钥解密,然后通过SM2和SM3...3)在数据传输阶段,本端使用SM2和SM3算法生成用户数据的数字签名,并使用SM1或SM4算法以及会话密钥对用户数据和数字签名进行加密;对端收到加密的用户数据后,使用相同的会话密钥解密,然后通过SM2和
最常用的三种商用密码算法是 SM2椭圆曲线公钥密码算法、SM3密码杂凑算法以及 SM4分组密码算法。...SM2算法密钥长度为192至256位长度的安全性就能达到 RSA 算法2048至4096位密钥长度的安全要求。SM2的优异性能取决于求解椭圆曲线离散对数问题的困难性。...SM2数字签名算法适用于商用密码应用中的数字签名和验证,可满足多种密码应用中的身份鉴别和数据完整性、真实性的安全需求。...在比原链主网中,交易的签名和验证使用的是 Ed25519签名算法,而在国密测试网中,使用 SM2算法替代。...SM3密码杂凑算法是哈希算法的一种,适用于商用密码应用中的数字签名和验证、消息认证码的生成与验证以及随机数的生成,可以满足多种密码应用的安全需求。
本期就给大家讲下,目前项目中数据签名算法的使用。我们使用的是SM2,不熟悉的可以去了解SM2的背景。...调用流程: ---- 签名算法:SM2 功能描述:用于对各种接口行为的信息内容进行签名,并加入 timestamp 字段, 达到验证行为发起方身份、保证信息传输完整性和安全性的目的。 ...签名流程: A)将请求发起方发送的所有数据根据参数名首字母 ASCII 码从小到大的顺序 排序(传入的 sign 签名参数除外),通过“&”符号拼接成一个“参数=参数 值”格式的字符串。...creators=testid&time=2022-05-16” B)将上一步得到的字符串经过一次 sha256 计算得到哈希值 SignHash C)将上一步得到 SignHash 用机构或用户的私钥进行签名得到签名值...C) 根据传入的信息构造成签名参数,对此信息进行签名(签名逻辑已在上文 阐述,此处不再赘述),通过 SM2 验证算法对传入的签名进行验证。
是签名证书 + 证书链 + 加密证书,还是签名证书 + 加密证书 + 证书链?在实现中发现TASSL采用的是前者,而沃通测试网站采用后者。在编码时请注意,最好是两者都兼容。 4....Certificate Verify 证书的验签流程和标准ECC证书的验签流程也不同,请参考《GMT 0003.2-2012 SM2椭圆曲线公钥密码算法第2部分:数字签名算法》,在后面我会详细写一写SM2...的数字签名算法。...具体过程为: 服务器发送SM2公钥(在加密证书中)到客户端。 客户端生成Pre-Master Secret,用SM2公钥加密后传送给服务器。...关于SM2加密 Pre-Master Secret,请参考我之前的文章: 详解国密SM2的加密和解密 Server Key Exchange消息中包含的数据如下: ?
在商用密码体系中,SM3 主要用于数字签名及验证、消息认证码生成及验证、随机数生成等。据国家密码管理局表示,其安全性及效率要高于 MD5 算法和 SHA-1 算法,与 SHA-256 相当。...签名(sign)和校验(verify): from gmssl import sm2, func # 16 进制的公钥和私钥 private_key = '00B9AB0B828FF68872F21A837FC303668428DEA11DCD1B24429D0C99E24EED83D5...签名(sign)和校验(verify): const sm2 = require('sm-crypto').sm2 // 获取密钥对 let keypair = sm2.generateKeyPairHex...() let publicKey = keypair.publicKey // 公钥 let privateKey = keypair.privateKey // 私钥 // 纯签名 + 生成椭圆曲线点...the data to be signed" let sigValueHex = sm2.doSignature(msgString, privateKey) // 签名
2 SM2椭圆曲线公钥密码算法(vs ECDSA、ECDH) SM2算法就是ECC椭圆曲线密码机制,但在签名、密钥交换方面不同于ECDSA、ECDH等国际标准,而是采取了更为安全的机制。...另外,SM2推荐了一条256位的曲线作为标准曲线。 SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,并在每个部分的附录详细说明了实现的相关细节及示例。...在总则的基础上给出了数字签名算法(包括数字签名生成算法和验证算法),密钥交换协议以及公钥加密算法(包括加密算法和解密算法),并在每个部分给出了算法描述,算法流程和相关示例。...数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密管理局批准的SM3密码杂凑算法和随机数发生器。数字签名算法,密钥交换协议以及公钥加密算法根据总则来选取有限域和椭圆曲线,并生成密钥对。...此算法适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。在SM2,SM9标准中使用。
网上有很多网友问算法SM2怎么使用?什么是压缩公钥和非压缩公钥?xB和yB这参数是什么?怎么使用SM2做加解密?如何签名和验签?有没有工具来验证下?...用来对SM2国密算法做加解密和签名,验签,秘钥生成再合适不过了。 需要工具的和使用上的疑问的都可以在留言区留言和评论,工具免费提供。也可以在个人的csdn资源中下载。...完整版的下载: sm2国密算法工具完整版,包含sm2,sm3和sm4-QT文档类资源-CSDN下载 工具源码的下载: sm2国密算法加解密、签名、验签QT工具源码(包含sm2,sm3和sm4源代码)-C...签名验证: 其中,xB位置输入sm2的压缩公钥,长度为33字节。最前面的02或03代表压缩的参数。明文处输入消息内容,签名的输入框输入待验证的签名信息(签名信息是定长,为64个字节)。点击验签按钮。...查阅《GMT 0003-2012》这份标准文档,有SM2算法的设计背景知识供解读。
值得注意的是,任何JCE实现必须要先获得由Oracle颁发的JCE代码签名证书才能运行在Oracle JDK上。...而腾讯Kona国密套件已经取得了该证书,并且它的jar文件均使用该证书进行了签名,所以该套件也可以运行在Oracle JDK上。...SM2 SM2是一个基于椭圆曲线(ECC)的非对称加密算法。...密钥对生成,SM2签名,SM2加密和SM2密钥交换等特性。...公钥基础设施(PKI) 腾讯Kona国密套件中的KonaPKIX基于JDK的Public Key Infrastructure(PKI)特性实现了对使用国密算法(SM2椭圆曲线和SM3withSM2签名算法
领取专属 10元无门槛券
手把手带您无忧上云