使用带有RSA C#的非对称算法私钥和公钥

我有两个AsymmetricAlgorithm对象,包含RSA Private和RSA公钥.从
Windows-MY密钥库中检索私钥,从用户证书中检索公钥.如何使用这些密钥和RSACryptoServiceProvider在C#中使用RSA算法加密数据?换句话说,我如何指定我想使用已有的密钥? 最佳答案

#region "RSA Encrypt/Decrypt"  
public string RSAEncrypt(string str, string publicKey)  
{  
  //---Creates a new instance of RSACryptoServiceProvider---  
  try {  
     RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();  
     //---Loads the public key---  
     RSA.FromXmlString(publicKey);  
     byte[] EncryptedStr = null;  

     //---Encrypts the string---  
     EncryptedStr = RSA.Encrypt(ASCII.GetBytes(str), false);  
     //---Converts the encrypted byte array to string---  
     int i = 0;  
     System.Text.StringBuilder s = new System.Text.StringBuilder();  
     for (i = 0; i <= EncryptedStr.Length - 1; i++) {  
         //Console.WriteLine(EncryptedStr(i))  
         if (i != EncryptedStr.Length - 1) {  
             s.Append(EncryptedStr[i] + " ");  
         } else {  
             s.Append(EncryptedStr[i]);  
         }  
     }  

     return s.ToString();  
   } catch (Exception err) {  
     Interaction.MsgBox(err.ToString());  
   }  
}  

public string RSADecrypt(string str, string privateKey)  
{  
  try {  
     //---Creates a new instance of RSACryptoServiceProvider---  
     RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();  
     //---Loads the private key---  
     RSA.FromXmlString(privateKey);  

     //---Decrypts the string---  
     byte[] DecryptedStr = RSA.Decrypt(HexToByteArr(str), false);  
     //---Converts the decrypted byte array to string---  
     System.Text.StringBuilder s = new System.Text.StringBuilder();  
     int i = 0;  
     for (i = 0; i <= DecryptedStr.Length - 1; i++) {  
         //Console.WriteLine(DecryptedStr(i))  
         s.Append(System.Convert.ToChar(DecryptedStr[i]));  
     }  
     //Console.WriteLine(s)  
     return s.ToString();  
  } catch (Exception err) {  
     Interaction.MsgBox(err.ToString());  
  }  
}  
#endregion 

公钥(arg)应如下所示:
    < RSAKeyValue>
      < Modulus> yNi8BvATA77f /6cU6z […] 9VULgU =< / Modulus>
      <指数> AQAB< /指数>
    < / RSAKeyValue>

私钥(arg)应如下所示:
    < RSAKeyValue>
      < Modulus> yNi8BvATA77f /6cU6z […] 9VULgU =< / Modulus>
      <指数> AQAB< /指数>
      < P> 8ZlZPmko3sam9pvD /升[…] ba0MWLjj9dyUMvmTQ6L8m9IQ ==< / P>
      < Q> 1NGHjXyEa9SjUwY […] v op2YyyglMeK / Gt5SL0v6xqQZQ ==< / Q>
      < DP> LpjE / aSKnWzzBt1E […] i5f63Ak9wVG3ZPnwVDwefNkMAQ ==< / DP>
      < DQ> qAgb8AGNiJom […] 8x3qaD3wx UbnM5v3aE5Q ==< / DQ>
      < InverseQ> fQ4 7r3Nmgvz113L […] uJqEgCNzw ==< / InverseQ>
      &LT d取代; B4n7JNeGHzHe / nqEK […] GaOBtuz0QTgE = LT; / d取代;
    < / RSAKeyValue>

点赞