我从来没有听说过公钥头...你能举个例子吗?
公钥信息可能是 X.509 证书中的公钥通常以SubjectPublicKeyInfo attribute 的形式编码的标准方式。这些 SubjectPublicKeyInfos 可以变成一个公钥文件(我假设这就是你想要做的?如果我错了,请纠正我!)该部分还告诉你在哪里可以找到有关特定算法的信息,对于他们引用的 RSA RFC 3279。 SubjectPublicKeyInfo 定义如下:
SubjectPublicKeyInfo ::= SEQUENCE {
algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING }
RFC 3279 说:
rsaEncryption OID 旨在用于算法字段
类型为 AlgorithmIdentifier 的值。参数字段必须
此算法标识符的 ASN.1 类型为 NULL。
进一步:
RSA 公钥必须使用 ASN.1 类型的 RSAPublicKey 进行编码:
RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER } -- e
所以它是包含相关数据的 subjectPublicKey 字段 - 例如,您可以使用 OpenSSL 的 x509 命令获取这些值:
openssl x509 -in certificate.cer -inform DER -noout -text
打印出来(对于 PEM 证书,删除 -inform DER):
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:cb:c2:...
Exponent: 65537 (0x10001)
还有一个巧妙的技巧,您可以使用x509 直接生成 PEM RSA 公钥文件:
openssl x509 -inform DER -in certificate.cer -pubkey -noout > pubkey.pem
您的公钥以 PEM 编码导出。