在c#中使用RSACryptoServiceProvider查找公钥和私钥

我有以下代码。

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参数将返回public + private键。

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