PEM编码的公钥格式

时间:2018-01-19 22:28:58

标签: c# vb.net cryptography x509

我有以下公钥,它应该是相同的,只是以不同的方式编码。

-----BEGIN PUBLIC KEY-----
MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAE+jkeOL+r/kTmmTUAPs9zk+PX0MydMmz3
WYUtE1qVO7KPIm4XfwbxTkRKZvkA4uOeumn+CVeBT8fV1jaWw2obbg==
-----END PUBLIC KEY-----


-----BEGIN PUBLIC KEY-----
MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA////////////////
/////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEEeb5m
fvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0
SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQNkFB
AgEBA0IABPo5Hji/q/5E5pk1AD7Pc5Pj19DMnTJs91mFLRNalTuyjyJuF38G8U5E
Smb5AOLjnrpp/glXgU/H1dY2lsNqG24=
-----END PUBLIC KEY-----

有谁能告诉我每种格式的名称是什么,以及是否有任何方法可以在.net之间进行转换

1 个答案:

答案 0 :(得分:3)

两者都是椭圆曲线公钥的X9.62格式。您可以通过将基数64(页眉和页脚行之间的所有内容)放入ASN.1解码器中来轻松查看。

您当然可以使用openssl asn1parse -inform PEM或者您可以将基础64粘贴到在线解码器中。例如,以下是public key representation 1representation 2的链接。

显然,第一个使用曲线seck256r1的命名曲线表示,另一个(specifiedCurve)显式指定所有参数。否则两者之间没有功能差异。

我没有看到任何方法在两者之间进行转换而不自己编码。通常会使用原始域表示。