当前位置:   article > 正文

国密SM2的两种密文格式3_sm2密文格式

sm2密文格式

1.GM/T0003.4 规定的标准密文格式

新标准即:C1||C3||C2 (GM/T0003.4-2012)
旧标准:C1||C2||C3 (笔者没有查询,待补充)

C1

C1是 [k]G—基点的k倍点(X1,Y1)按照规定转换的字符串 ,用于校验公私钥是否匹配
格式为04||X1||Y1 其中04代表未压缩格式,详情见附录。

k是随机数

C2

裸密文,加密后的字符串:M\oplus t 

t=KDF(X2||Y2,klen) *KDF密钥派生函数

klen为原文M的比特长度,

(X2,Y2)=[k]Pb *Pb为用户公钥

C3

摘要值Hash(X2||M||Y2)

2.GM/T0009 规定的加密数据格式

0009规定的是密文的ASN.1结构,定义为:

SM2Cipher ::= SEQENCE{
XCoordinate INTEGER,                   --x分量
YCoordinate INTEGER,                 --y分量
HASH OCTET STRING SIZE(32),--杂凑值
CipherText OCTET STRING             --密文

}

这里的x分量和y分量可以等同于上一章的C1对应的(X1,Y1),杂凑值是C3,密文0009规定的是与明文登场的密文,应该也就是C2

3.区别两种密文的方式

由于第一种密文开头是C1,一般第一个字节是04作为未压缩点的标识。而第二种是ASN.1结构,整体是一个SEQENCE。ASN.1是TLV结构,开头会声明类型,所以开头肯定是30(SEQENCE的类型码)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/998426
推荐阅读
相关标签
  

闽ICP备14008679号