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 = "123456";

Console.WriteLine("要加密的字符串是:{0}", strText);

string str1 = myRSA.Encrypt("123456", dictK["PublicKey"]);

Console.WriteLine("加密后的字符串:{0}", str1);

string str2 = myRSA.Decrypt(str1, dictK["PrivateKey"]);

Console.WriteLine("解密后的字符串:{0}", str2);

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 = "123456";

Console.WriteLine("要加密的字符串是:{0}", strText);

string str1 = myRSA.Encrypt("123456");

Console.WriteLine("加密后的字符串:{0}", str1);

string str2 = myRSA.Decrypt(str1);

Console.WriteLine("解密后的字符串:{0}", str2);

总结

以上所述是小编给大家介绍的C#中RSA加密与解密的实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

以上是 C#中RSA加密与解密的实例详解 的全部内容, 来源链接: utcz.com/z/346189.html

回到顶部