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-----