openSSL:PEM_write_RSAPublicKey 和 PEM_write_RSA_PUBKEY 之间的区别

dar*_*eir 5 c++ openssl public-key

在 openssl 库中,我可以看到两种将公钥写入文件的方法:

int PEM_write_RSAPublicKey(FILE *fp, RSA *x);
int PEM_write_RSA_PUBKEY(FILE *fp, RSA *x);
Run Code Online (Sandbox Code Playgroud)

在文档中,我可以看到:

RSAPublicKey 函数使用 RSA 结构处理 RSA 公钥。公钥使用 PKCS#1 RSAPublicKey 结构进行编码。

RSA_PUBKEY 函数还使用 RSA 结构处理 RSA 公钥。但是,公钥是使用 SubjectPublicKeyInfo 结构编码的,如果公钥不是 RSA,则会发生错误

但我不明白什么是

主题公钥信息

两种方法之间的基本区别是什么!

Sky*_*fer 2

subjectPublicKeyInfo - 公钥的 ASN1 结构,在 rfc 3280(Internet X.509 公钥基础设施)中进行了描述。该格式实际上包含公钥算法的 id 和公钥本身。在这种情况下,该公钥根据 pkcs1 标准进行格式化。所以X.509格式是更高级的格式,它不仅描述RSA公钥,而且描述一般的公钥。