0605.1945天:SM2公钥格式转换

2024-06-04  本文已影响0人  我的职业生涯

#每日三件事,第1945天#

通过wireshark抓包得到的SM2公钥,一般是65字节。有些工具对公钥的要求是输入04开始的公钥,而有些工具则要求输入pkcs相关格式的公钥。

SM2公钥

公钥:

045b2e282b85da679e01ca464af2d81b206c11428b8f75d5c3a23c3847f81e017752293d32684faae0e3cec04e6d1a76b655a73345276cc55be9aa644e5a52beaf

如何把这个椭圆曲线上的点转换为pkcs#1格式的公钥呢?

添加一个头部信息:

3059301306072a8648ce3d020106082a811ccf5501822d034200

变成:

3059301306072a8648ce3d020106082a811ccf5501822d034200045b2e282b85da679e01ca464af2d81b206c11428b8f75d5c3a23c3847f81e017752293d32684faae0e3cec04e6d1a76b655a73345276cc55be9aa644e5a52beaf

然后Base64编码,得到:

MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEWy4oK4XaZ54BykZK8tgbIGwRQouP
ddXDojw4R/geAXdSKT0yaE+q4OPOwE5tGna2VaczRSdsxVvpqmROWlK+rw==

最后再加上pkcs#1的头和尾即可:

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEWy4oK4XaZ54BykZK8tgbIGwRQouP
ddXDojw4R/geAXdSKT0yaE+q4OPOwE5tGna2VaczRSdsxVvpqmROWlK+rw==
-----END PUBLIC KEY-----

当然,最方便的还是直接导出证书,然后从证书中导出公钥。

openssl x509 -in c1.cert -noout -text -pubkey

……
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEWy4oK4XaZ54BykZK8tgbIGwRQouP
ddXDojw4R/geAXdSKT0yaE+q4OPOwE5tGna2VaczRSdsxVvpqmROWlK+rw==
-----END PUBLIC KEY-----
上一篇 下一篇

猜你喜欢

热点阅读