openssl 编程

Contents:

SM2椭圆曲线公钥密码算法推荐曲线参数

推荐使用素数域256位椭圆曲线。
椭圆曲线方程:y
2 = x
3 + ax + b。
曲线参数:
p=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF
a=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFC
b=28E9FA9E 9D9F5E34 4D5A9E4B CF6509A7 F39789F5 15AB8F92 DDBCBD41 4D940E93
n=FFFFFFFE FFFFFFFF FFFFFFFF FFFFFFFF 7203DF6B 21C6052B 53BBF409 39D54123
Gx=32C4AE2C 1F198119 5F990446 6A39C994 8FE30BBF F2660BE1 715A4589 334C74C7
Gy=BC3736A2 F4F6779C 59BDCEE3 6B692153 D0A9877C C62A4740 02DF32E5 2139F0A0
《GBT 32918.1-2016 SM2椭圆曲线公钥密码算法 第1部分:总则》,第四章节提到椭圆曲线上点的压缩与解压缩。
   这样SM2的公钥将可以占用更少的字节数。
《GMT 0009-2012 SM2密码算法使用规范》对SM2PublicKey做出规定,
   使用非压缩方式,Bit String类型,内容是04||X||Y。

$ gmssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:sm2p256v1 -out private.pem
$ gmssl pkey -pubout -in private.pem -out public.pem

Indices and tables