软件编程
位置:首页>> 软件编程>> C#编程>> C#中RSA加密与解密的实例详解

C#中RSA加密与解密的实例详解

作者:在代码的世界里游走  发布时间:2022-09-01 15:43:06 

标签: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);

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 = "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加密与解密的实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

来源:https://www.cnblogs.com/ChengWenHao/archive/2019/08/22/CSharpRSA.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com