Найти общедоступные и закрытые ключи с помощью RSACryptoServiceProvider в c #

У меня есть следующий код.

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); //Save the public key information to an RSAParameters structure. RSAParameters RSAKeyInfo = RSA.ExportParameters(true); byte[] toEncryptData = Encoding.ASCII.GetBytes("hello world"); byte[] encryptedRSA = RSAEncrypt(toEncryptData, RSAKeyInfo, false); string EncryptedResult = System.Text.Encoding.Default.GetString(encryptedRSA); byte[] decryptedRSA = RSADecrypt(encryptedRSA, RSAKeyInfo, false); string originalResult = System.Text.Encoding.Default.GetString(decryptedRSA); return userDetails.ToString(); 

Когда я использую метод RSAEncrypt, он принимает параметр «RSAKeyInfo» (открытый ключ для шифрования и закрытый ключ для дешифрования).

Как я могу получить значение частных и открытых ключей, которые этот метод используется для шифрования и дешифрования.

Спасибо,

Вам необходимо использовать RSA.ToXmlString

В приведенном ниже коде используются два разных экземпляра RSA с общей строкой, содержащей общедоступные и закрытые ключи. Чтобы получить только открытый ключ, используйте false параметры, true параметр вернет открытый + закрытый ключ.

 class Program { public static void Main(string[] args) { //Encrypt and export public and private keys var rsa1 = new RSACryptoServiceProvider(); string publicPrivateXml = rsa1.ToXmlString(true); // <<<<<<< HERE byte[] toEncryptData = Encoding.ASCII.GetBytes("hello world"); byte[] encryptedRSA = rsa1.Encrypt(toEncryptData, false); string EncryptedResult = Encoding.Default.GetString(encryptedRSA); //Decrypt using exported keys var rsa2 = new RSACryptoServiceProvider(); rsa2.FromXmlString(publicPrivateXml); byte[] decryptedRSA = rsa2.Decrypt(encryptedRSA, false); string originalResult = Encoding.Default.GetString(decryptedRSA); } }