国密SM2椭圆曲线密码算法

本文详细介绍了国密SM2椭圆曲线密码算法,涵盖SM2密钥对的组成,公钥、私钥的数据格式,加密、解密、签名验证以及密钥协商的过程。SM2算法在数据加密、数字签名等方面的应用提供了安全保障。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SM2密码算法数据结构已经在GM/T 0009规范中详细定义了,为巩固加深理解,本节内容为学习笔记,仅摘抄记录。

1. SM2的密钥对

1.1 SM2公钥

SM2公钥是SM2曲线上的一个点,由横坐标和纵坐标两个分量来标识,记为(x, y),简记为Q,每个分量的长度为256位。

1.2 SM2私钥

SM2私钥是一个大于或等于1且小于n-1的整数(n为SM2算法的阶,其值详见GM/T 0003),简记为k,长度为256位。


2. 数据格式

2.1 密钥数据格式

SM2算法的私钥数据格式的ASN.1定义为:

SM2PrivateKey::=INTEGER

SM2算法公钥数据格式的ASN.1定义为:

SM2PublicKey::=BIT STRING

SM2PublicKey为BIT STRING类型,结构为04||X||Y,其中X,Y分别表示公钥额x分量和y分量,其长度各为256位。


2.2 加密数据格式

SM2算法加密后的数据格式的ASN.1定义为:

SM2Cipher:: = SEQUENCE{

XCoordinate                  INTEGER,                                --x分量

YCoordinate                  INTEGER,                                --y分量

HASH                             OCTET STRING SIZE(32),      --杂凑值

CipherText                     OCTET STRING,                     --密文(密文长度与原文长度相等)

}

其中,HASH为使用SM3算法对明文数据运算得到的杂凑值,其长度固定为256位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洒家肉山大魔王

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值