首页 >后端开发 >C++ >如何在.NET中读取和使用PEM RSA私钥?

如何在.NET中读取和使用PEM RSA私钥?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-06 11:38:41199浏览

How to Read and Use a PEM RSA Private Key in .NET?

在 .NET 中读取 PEM RSA 私钥

在 .NET 中,有多种方法可以读取 PEM RSA 私钥并实例化用于解密目的的 RSACryptoServiceProvider。

使用.NET 5 及更高版本

对于 .NET 5 及更高版本,内置了对读取 PEM RSA 私钥的支持。以下代码示例演示了如何执行此操作:

var privateKey = @""-----BEGIN RSA PRIVATE KEY-----
{ the full PEM private key } 
-----END RSA PRIVATE KEY-----"";

var rsa = RSA.Create();
rsa.ImportFromPem(privateKey.ToCharArray());

var decryptedBytes = rsa.Decrypt(
    Convert.FromBase64String("{ base64-encoded encrypted string }"), 
    RSAEncryptionPadding.Pkcs1
);

// this will print the original unencrypted string
Console.WriteLine(Encoding.UTF8.GetString(decryptedBytes));

使用 Bouncy Castle 库

对于旧版本的 .NET,您可以利用 Bouncy Castle 库读取 PEM RSA 私钥。这是一个示例:

var bytesToDecrypt = Convert.FromBase64String("la0Cz.....D43g=="); // string to decrypt, base64 encoded
 
AsymmetricCipherKeyPair keyPair; 
 
using (var reader = File.OpenText(@"c:\myprivatekey.pem")) // file containing RSA PKCS1 private key
    keyPair = (AsymmetricCipherKeyPair) new PemReader(reader).ReadObject(); 
 
var decryptEngine = new Pkcs1Encoding(new RsaEngine());
decryptEngine.Init(false, keyPair.Private); 
 
var decrypted = Encoding.UTF8.GetString(decryptEngine.ProcessBlock(bytesToDecrypt, 0, bytesToDecrypt.Length)); 

以上是如何在.NET中读取和使用PEM RSA私钥?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn