RSACryptoServiceProvider

RSACryptoServiceProvider

我有两个包含RSA私钥和RSA公钥的AsymmetricAlgorithm对象。私钥是从Windows-MY密钥库中检索出来的,而私钥是从用户的证书中检索出来的。如何在C#中使用RSA算法将这些密钥与RSACryptoServiceProvider一起使用来加密数据?换句话说,如何指定我要使用已经拥有的键? 最佳答案 #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)应该如下所示:           yNi8BvATA77f + / 6cU6z [...] 9VULgU =        AQAB     私钥(arg)应该如下所示:           yNi8BvATA77f + / 6cU6z [...] 9VULgU =        AQAB        8ZlZPmko3sam9pvD / l [...] ba0MWLjj9dyUMvmTQ6L8m9IQ ==        1NGHjXyEa9SjUwY [...] v + op2YyyglMeK / Gt5SL0v6xqQZQ ==        LpjE / aSKnWzzBt1E [...] i5f63Ak9wVG3ZPnwVDwefNkMAQ ==        qAgb8AGNiJom [...] 8x3qaD3wx + UbnM5v3aE5Q ==        fQ4 + 7r3Nmgvz113L [...] uJqEgCNzw ==        B4n7JNeGHzHe / nqEK [...] GaOBtuz0QTgE =     
09-26 07:10