在C#中,您可以从PEM格式的证书中提取公钥。通常,PEM格式的证书包含X.509证书的信息。在下面的示例中,我们将演示如何加载PEM格式的证书,并从中提取公钥。
X509Certificate2
对象。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)); } }
pemCertificate
变量示例包含了PEM格式的证书(请替换为实际证书内容)。Replace
方法移除PEM证书的标头和尾部,获取Base64编码的证书内容。X509Certificate2
对象:使用字节数组初始化X509Certificate2
对象。GetRSAPublicKey()
方法获取RSA公钥。X509Certificate2
类提供了很多其他方法来操作证书,例如获取有效期、颁发者等信息,可根据需要进一步使用。标签: 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。