纳金网
标题:
RSA加密的实现
[打印本页]
作者:
烟雨
时间:
2016-4-27 05:06
标题:
RSA加密的实现
最近做的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了
欢迎光临 纳金网 (http://go.narkii.com/club/)
Powered by Discuz! X2.5