我有一个PEM
格式的RSA
私钥,有没有一种直接的方法可以从.NET中读取它并实例化RSACryptoServiceProvider
来解密用相应公钥加密的数据?
我有一个PEM
格式的RSA
私钥,有没有一种直接的方法可以从.NET中读取它并实例化RSACryptoServiceProvider
来解密用相应公钥加密的数据?
现在,.NET 5开箱即可支持此功能.
要try 下面的代码片段,请生成密钥对并在http://travistidwell.com/jsencrypt/demo/处加密一些文本
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));
我解决了,谢谢.如果有人感兴趣,bouncycastle做了这个把戏,只是由于缺乏我这边的知识和文档,花了我一些时间.代码是这样的:
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));