查看: 947|回复: 1
打印 上一主题 下一主题

[其他] RSA加密的实现

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53488
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2016-4-27 05:06:00 |只看该作者 |倒序浏览
最近做的App要加密,用RSA,说实话,第一次接触,完全不懂什么公钥啊私钥的东东。网上查了点儿资料,最后还是实现了最终的结果。
  1. using System;
  2. using System.Security.Cryptography;
  3. using System.Text;

  4. namespace LLL
  5. {
  6.     public class LRSA
  7.     {
  8.         /// <summary>
  9.         /// 生成公钥和私钥
  10.         /// </summary>
  11.         /// <returns></returns>
  12.         public static string[] GenerateKeys()
  13.         {
  14.             string[] sKeys = new string[2];
  15.             RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  16.             sKeys[0] = rsa.ToXmlString(true);//私钥
  17.             sKeys[1] = rsa.ToXmlString(false);//公钥

  18.             return sKeys;
  19.         }
  20.         private static string privatekey= "<RSAKeyValue><Modulus>xWG0u5W1onPT3DV4VSZtiZ3OkZhdGXDytYPmex8Ki" +
  21.                         "sWrqQF/n3a68/NUrn7pO7ma7pf0rkSQfyUOdv7ng61DIsuid72iEkop9T8lJ53eqqKVG5xlL6YpNBsI8XUz9EvX2stz/cv8" +
  22.                         "vj20Ne/D9Kny4Lcfe+iSP460vivULLmIVR0=</Modulus><Exponent>EQ==</Exponent><P>zbhWmKlhtYLALUrMCEZda2kLzaNHHuyeP3k9OX" +
  23.                         "wBLv6jg1gvp5EmhLBoztNIgUf9SyemPDXVv6kyrJj9g29QPw==</P><Q>9Z+kt67joySKMVH81L3IukhGcLXjN/2WD2FBZu91GVUP2Vl/QLmo0vYpl6v2ZH" +
  24.                         "6tT707bzSZlEl74TcaBmiDow==</Q><DP>PIGC4Zs62whWo+jSmQWjAXk/tPPJn68BXfZ7a0KW77RONbCGfJQaY0Lxpj4kYkJZjpMw5IhN7ROlfg7hJqhExw==</DP>" +
  25.                         "<DQ>VrDQuUzI0CsDmO/CpXAoujegZAP114atbtcIBjZlkHhf8lvSj1CV8BqlRJcLqv+Idn8F6wOBf6F3BDGQtve1/Q==</DQ><InverseQ>mfByw9n3MkppRGDCMULrCmM" +
  26.                         "PUhCBOFb03X1yvbmfUE2x8bRWI4FLV4ZUGOVneTX8TRfIzr8/Z0LTrFCYpnveBA==</InverseQ><D>LnFXs6rBU2aMM9BYjIGDL3Bs1vasfnTt0FtFSiVr5Gq++pbw2" +
  27.                         "joN3wwT7NKROzq7CvaT7MTWtIEwlHg2eVXxrWtc0fuY5O2IKDTUywAzane9IFJdLmz/w7eSdV8+O8SXkM7ETswp3dvG+U15lC4ohTPRjbQJXivxbRYfFAs4luE=</D></RSAKeyValue>";

  28.         private static string publickey = "<RSAKeyValue><Modulus>xWG0u5W1onPT3DV4VSZtiZ3OkZhdGXDy" +
  29.                          "tYPmex8KisWrqQF/n3a68/NUrn7pO7ma7pf0rkSQfyUOdv7ng61DIsuid72iEkop" +
  30.                          "9T8lJ53eqqKVG5xlL6YpNBsI8XUz9EvX2stz/cv8vj20Ne/D9Kny4Lcfe+iSP460vivULLmIVR0=</Modulus><Exponent>EQ==</Exponent></RSAKeyValue>";
  31.         /// <summary>
  32.         /// 公钥加密
  33.         /// </summary>
  34.         /// <param name="source">加密原文</param>
  35.         /// <returns>授权码</returns>
  36.         public static string RSAEncrypt(string source)
  37.         {
  38.             RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  39.             byte[] cipherBytes;
  40.             rsa.FromXmlString(publickey);
  41.             cipherBytes = rsa.Encrypt(Encoding.UTF8.GetBytes(source), false);

  42.             return Convert.ToBase64String(cipherBytes);
  43.         }

  44.         /// <summary>
  45.         /// 私钥解密
  46.         /// </summary>
  47.         /// <param name="enContent">待解密密文</param>
  48.         /// <returns></returns>
  49.         public static string RSADecrypt(string enContent)
  50.         {
  51.             RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
  52.             byte[] cipherBytes;
  53.             rsa.FromXmlString(privatekey);
  54.             try
  55.             {
  56.                 cipherBytes = rsa.Decrypt(Convert.FromBase64String(enContent), false);
  57.                 return Encoding.UTF8.GetString(cipherBytes);
  58.             }
  59.             catch (Exception)
  60.             {
  61.                 return String.Empty;
  62.             }
  63.         }
  64.     }
  65. }
复制代码
然后再用其他代码调用。先用GenerateKeys()生成一个公钥,一个私钥,然后直接加密原文RSAEncrypt(string source),解密密文RSADecrypt(string enContent)就ok了
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏1 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2025-2-7 20:16 , Processed in 0.067304 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部