🌏SM2签名
2023-8-2
| 2023-8-10
0  |  0 分钟
type
status
date
summary
password
category
slug
icon
 
 
🤟
校赛题看麻了,好难好难,mxx307大师傅出的题我果然不会写呢🥹🥹🥹🥹🥹🥹,涉及到国密SM2,这里浅浅学习一下啦!(另外mxx307yyds!!ooo小师傅hwb yyds!!!)
 

✨SM2

SM2 国密算法是一种非对称加密算法,基于 ECC(椭圆加密算法). SM2 算法由于基于 ECC,签名速度与秘钥速度都快于 RSA。另外 SM2 采用 ECC 256 位,安全强度比 RSA 2048 位更高,且运算速度同样也高于 ESA。
熟悉 RSA 算法同学应该知道,非对称加密算法,会有一对公私钥。
  • 私钥可以用于加签,公钥可以用于验签。
  • 公钥可以用于加密,私钥可以用于解密
同样 SM2 算法也有一对公私钥,它们的长度远远小于 RSA 公私钥。
SM2 私钥,一个大于等于 1 且小于 n-1的整数(n 为 sm2 算法的阶),长度为 256 位,即 32 个字节,通常会用 16 进制表示。
 

🗝️密钥对生成

SM2密钥生成是指生成SM2算法的密钥对的过程,该密钥对包括私钥和与之对应的公钥。
k:SM2PrivateKey,SM2私钥 Q:SM2PublicKey,SM2公钥 用随机数发生器产生整数 ; G为基点,计算点。 则私钥是d,公钥为P(椭圆曲线上的一点)。

👐基础参数

SM2曲线方程,其中六个参量都是固定的。根据国密局给出的规范定义如下:
方程为: 
 
私钥长度:32字节,256位
公钥长度:SM2非压缩公钥格式字节串长度为65字节,压缩格式长度为33字节,若公钥y坐标最后一位为0,则首字节为0x02,否则为0x03。非压缩格式公钥首字节为0x04
签名长度:64字节。
 
SM2的签名结果是由两个数字拼接构成,SM2签名的长度为128位(R+S = 64+64 = 128)有时候我们看到的不止128位,多半是因为做了ASN1格式转换。
 

📑签名过程

notion image
🎈
说明:第5步若r=0或r+k=n则返回第3步;第6步若s=0则返回第3步。

🫣代码实现

📑验证签名

notion image
 
代码实现

📎 参考文章

 
 
💡
感觉学会了~( ̄▽ ̄)~*!但我会了小师傅肯定不信🥲🥲🥲
 
日常学习
lattice的HNP问题sage(格)
目录