Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membaca dan Menggunakan Kunci Peribadi PEM RSA dalam .NET?

Bagaimana untuk Membaca dan Menggunakan Kunci Peribadi PEM RSA dalam .NET?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-06 11:38:41249semak imbas

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

Membaca Kunci Peribadi PEM RSA dalam .NET

Dalam .NET, terdapat beberapa pendekatan untuk membaca kunci peribadi PEM RSA dan membuat instantiat RSACryptoServiceProvider untuk tujuan penyahsulitan.

Menggunakan .NET 5 dan Ke Atas

Untuk versi .NET 5 dan lebih baharu, sokongan untuk membaca kunci peribadi PEM RSA terbina dalam. Contoh kod berikut menunjukkan cara untuk melakukan ini:

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));

Menggunakan Perpustakaan Istana Bouncy

Untuk versi .NET yang lebih lama, anda boleh menggunakan perpustakaan Istana Bouncy untuk baca kunci peribadi PEM RSA. Berikut ialah contoh:

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)); 

Atas ialah kandungan terperinci Bagaimana untuk Membaca dan Menggunakan Kunci Peribadi PEM RSA dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn