在 .NET 中使用 OpenSSL RSA 密钥
使用 OpenSSL RSA_generate_key() 创建 RSA 密钥对时,它会在以下位置生成公钥和私钥默认情况下为 pkcs#1 格式。但是,.NET 希望它们采用 x509 格式。
PEM 编码格式
PEM 编码密钥可以使用两种格式编写:
.NET 对密钥格式的支持
.NET 支持 ASN.1/DER 编码密钥和写入 subjectPublicKeyInfo 结构的 PEM 编码密钥,不仅仅是公钥。
转换为 X509 格式
要将 pkcs#1 公钥转换为 x509 格式,请在 C 代码中使用 PEM_write_bio_PUBKEY 而不是 PEM_write_bio_RSAPublicKey。这将写入SubjectPublicKeyInfo结构。
代码示例
<code class="cpp">... // Convert RSA key to PKEY EVP_KEY_ptr pkey(EVP_PKEY_new(), ::EVP_PKEY_free); rc = EVP_PKEY_set1_RSA(pkey.get(), rsa.get()); ASSERT(rc == 1); ... // Write SubjectPublicKeyInfo with OID in PEM // Load with PEM_read_bio_PUBKEY rc = PEM_write_bio_PUBKEY(pem2.get(), pkey.get()); ASSERT(rc == 1); ...</code>
附加说明
相关链接
以上是如何将 OpenSSL RSA 密钥转换为 .NET 的 X.509 格式?的详细内容。更多信息请关注PHP中文网其他相关文章!