- 最后登录
- 2021-7-6
- 注册时间
- 2012-12-27
- 阅读权限
- 90
- 积分
- 76145
![Rank: 8](static/image/common//star_level3.gif) ![Rank: 8](static/image/common//star_level3.gif)
- 纳金币
- 53488
- 精华
- 316
|
最近做的App要加密,用RSA,说实话,第一次接触,完全不懂什么公钥啊私钥的东东。网上查了点儿资料,最后还是实现了最终的结果。- using System;
- using System.Security.Cryptography;
- using System.Text;
- namespace LLL
- {
- public class LRSA
- {
- /// <summary>
- /// 生成公钥和私钥
- /// </summary>
- /// <returns></returns>
- public static string[] GenerateKeys()
- {
- string[] sKeys = new string[2];
- RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
- sKeys[0] = rsa.ToXmlString(true);//私钥
- sKeys[1] = rsa.ToXmlString(false);//公钥
- return sKeys;
- }
- private static string privatekey= "<RSAKeyValue><Modulus>xWG0u5W1onPT3DV4VSZtiZ3OkZhdGXDytYPmex8Ki" +
- "sWrqQF/n3a68/NUrn7pO7ma7pf0rkSQfyUOdv7ng61DIsuid72iEkop9T8lJ53eqqKVG5xlL6YpNBsI8XUz9EvX2stz/cv8" +
- "vj20Ne/D9Kny4Lcfe+iSP460vivULLmIVR0=</Modulus><Exponent>EQ==</Exponent><P>zbhWmKlhtYLALUrMCEZda2kLzaNHHuyeP3k9OX" +
- "wBLv6jg1gvp5EmhLBoztNIgUf9SyemPDXVv6kyrJj9g29QPw==</P><Q>9Z+kt67joySKMVH81L3IukhGcLXjN/2WD2FBZu91GVUP2Vl/QLmo0vYpl6v2ZH" +
- "6tT707bzSZlEl74TcaBmiDow==</Q><DP>PIGC4Zs62whWo+jSmQWjAXk/tPPJn68BXfZ7a0KW77RONbCGfJQaY0Lxpj4kYkJZjpMw5IhN7ROlfg7hJqhExw==</DP>" +
- "<DQ>VrDQuUzI0CsDmO/CpXAoujegZAP114atbtcIBjZlkHhf8lvSj1CV8BqlRJcLqv+Idn8F6wOBf6F3BDGQtve1/Q==</DQ><InverseQ>mfByw9n3MkppRGDCMULrCmM" +
- "PUhCBOFb03X1yvbmfUE2x8bRWI4FLV4ZUGOVneTX8TRfIzr8/Z0LTrFCYpnveBA==</InverseQ><D>LnFXs6rBU2aMM9BYjIGDL3Bs1vasfnTt0FtFSiVr5Gq++pbw2" +
- "joN3wwT7NKROzq7CvaT7MTWtIEwlHg2eVXxrWtc0fuY5O2IKDTUywAzane9IFJdLmz/w7eSdV8+O8SXkM7ETswp3dvG+U15lC4ohTPRjbQJXivxbRYfFAs4luE=</D></RSAKeyValue>";
- private static string publickey = "<RSAKeyValue><Modulus>xWG0u5W1onPT3DV4VSZtiZ3OkZhdGXDy" +
- "tYPmex8KisWrqQF/n3a68/NUrn7pO7ma7pf0rkSQfyUOdv7ng61DIsuid72iEkop" +
- "9T8lJ53eqqKVG5xlL6YpNBsI8XUz9EvX2stz/cv8vj20Ne/D9Kny4Lcfe+iSP460vivULLmIVR0=</Modulus><Exponent>EQ==</Exponent></RSAKeyValue>";
- /// <summary>
- /// 公钥加密
- /// </summary>
- /// <param name="source">加密原文</param>
- /// <returns>授权码</returns>
- public static string RSAEncrypt(string source)
- {
- RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
- byte[] cipherBytes;
- rsa.FromXmlString(publickey);
- cipherBytes = rsa.Encrypt(Encoding.UTF8.GetBytes(source), false);
- return Convert.ToBase64String(cipherBytes);
- }
- /// <summary>
- /// 私钥解密
- /// </summary>
- /// <param name="enContent">待解密密文</param>
- /// <returns></returns>
- public static string RSADecrypt(string enContent)
- {
- RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
- byte[] cipherBytes;
- rsa.FromXmlString(privatekey);
- try
- {
- cipherBytes = rsa.Decrypt(Convert.FromBase64String(enContent), false);
- return Encoding.UTF8.GetString(cipherBytes);
- }
- catch (Exception)
- {
- return String.Empty;
- }
- }
- }
- }
复制代码 然后再用其他代码调用。先用GenerateKeys()生成一个公钥,一个私钥,然后直接加密原文RSAEncrypt(string source),解密密文RSADecrypt(string enContent)就ok了
|
|