C# -- RSA加密与解密

时间:2023-03-09 02:01:46
C# -- RSA加密与解密

1.  RSA加密与解密  --  使用公钥加密、私钥解密

    public class RSATool
{
public string Encrypt(string strText, string strPublicKey)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(strPublicKey); byte[] byteText = Encoding.UTF8.GetBytes(strText);
byte[] byteEntry = rsa.Encrypt(byteText, false); return Convert.ToBase64String(byteEntry);
} public string Decrypt(string strEntryText,string strPrivateKey)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(strPrivateKey); byte[] byteEntry = Convert.FromBase64String(strEntryText);
byte[] byteText = rsa.Decrypt(byteEntry, false); return Encoding.UTF8.GetString(byteText);
} public Dictionary<string,string> GetKey()
{
Dictionary<string, string> dictKey = new Dictionary<string, string>();
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); dictKey.Add("PublicKey", rsa.ToXmlString(false));
dictKey.Add("PrivateKey", rsa.ToXmlString(true)); return dictKey;
}
}

测试:

            RSATool myRSA = new RSATool();
Dictionary<string, string> dictK = new Dictionary<string, string>();
dictK = myRSA.GetKey(); string strText = "";
Console.WriteLine("要加密的字符串是:{0}", strText); string str1 = myRSA.Encrypt("", dictK["PublicKey"]);
Console.WriteLine("加密后的字符串:{0}", str1); string str2 = myRSA.Decrypt(str1, dictK["PrivateKey"]);
Console.WriteLine("解密后的字符串:{0}", str2);

C# -- RSA加密与解密

2.  RSA加密与解密  --  使用同一个密钥容器进行加密与解密

    public class RSAToolX
{
public string Encrypt(string strText)
{
CspParameters CSApars = new CspParameters();
CSApars.KeyContainerName = "Test001"; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CSApars); byte[] byteText = Encoding.UTF8.GetBytes(strText);
byte[] byteEntry = rsa.Encrypt(byteText, false); return Convert.ToBase64String(byteEntry);
} public string Decrypt(string strEntryText)
{
CspParameters CSApars = new CspParameters();
CSApars.KeyContainerName = "Test001"; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CSApars); byte[] byteEntry = Convert.FromBase64String(strEntryText);
byte[] byteText = rsa.Decrypt(byteEntry, false); return Encoding.UTF8.GetString(byteText);
}
}

测试 :

            RSAToolX myRSA = new RSAToolX();

            string strText = "";
Console.WriteLine("要加密的字符串是:{0}", strText); string str1 = myRSA.Encrypt("");
Console.WriteLine("加密后的字符串:{0}", str1); string str2 = myRSA.Decrypt(str1);
Console.WriteLine("解密后的字符串:{0}", str2);

C# -- RSA加密与解密