C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享

2024/11/15 6:04:39

本文主要是介绍C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在C#中,您可以从PEM格式的证书中提取公钥。通常,PEM格式的证书包含X.509证书的信息。在下面的示例中,我们将演示如何加载PEM格式的证书,并从中提取公钥。

步骤

  1. 读取PEM格式的证书:从文件或字符串中读取证书的PEM格式。
  2. 去除PEM头和尾:PEM格式证书包括特定的标头和尾部,需要去除。
  3. 创建X509Certificate2对象:使用证书的字节数组创建X509Certificate2对象。
  4. 提取公钥:从X509Certificate2对象中提取公钥。

示例代码

以下是代码示例:

using System;
using System.IO;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

class Program
{
    static void Main(string[] args)
    {
        // 假设您的 PEM 格式证书存储在一个字符串中
        string pemCertificate = @"-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJAL3PeV0q/A5NMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
...
-----END CERTIFICATE-----";

        // 移除PEM标头和尾部
        string base64 = pemCertificate
            .Replace("-----BEGIN CERTIFICATE-----", "")
            .Replace("-----END CERTIFICATE-----", "")
            .Replace("\n", "")
            .Replace("\r", "");

        // 将Base64字符串转换为字节数组
        byte[] certificateBytes = Convert.FromBase64String(base64);

        // 创建X509Certificate2对象
        using var certificate = new X509Certificate2(certificateBytes);

        // 提取公钥
        using RSA publicKey = certificate.GetRSAPublicKey();

        // 输出公钥信息(如果需要)
        Console.WriteLine("公钥格式: " + publicKey.KeyExchangeAlgorithm);
        Console.WriteLine("公钥: " + Convert.ToBase64String(publicKey.ExportSubjectPublicKeyInfo()));

        // 测试:使用提取的公钥加密数据
        string originalData = "Hello, World!";
        byte[] dataToEncrypt = System.Text.Encoding.UTF8.GetBytes(originalData);
        byte[] encryptedData = publicKey.Encrypt(dataToEncrypt, RSAEncryptionPadding.OaepSHA256);

        Console.WriteLine("加密数据: " + Convert.ToBase64String(encryptedData));
    }
}

C#

代码说明

  1. PEM格式证书pemCertificate变量示例包含了PEM格式的证书(请替换为实际证书内容)。
  2. 去除标头和尾部:通过Replace方法移除PEM证书的标头和尾部,获取Base64编码的证书内容。
  3. 创建X509Certificate2对象:使用字节数组初始化X509Certificate2对象。
  4. 提取公钥:调用GetRSAPublicKey()方法获取RSA公钥。
  5. 示例加密:演示如何使用提取的公钥加密一段简单的数据,并输出加密结果。

注意事项

  • 确保PEM证书字符串的完整性和正确性,以避免在转换过程中出现错误。
  • 处理证书和私钥时,请务必注意安全性,确保敏感信息受到保护。
  • X509Certificate2类提供了很多其他方法来操作证书,例如获取有效期、颁发者等信息,可根据需要进一步使用。

标签: 来源:

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。



这篇关于C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程