今天研究了一下RSA的加密与解密,简单的说,就是用公钥对字符串进行加密,用私钥进行解密,
用C#写了一个DEMO,同时也借鉴了网上的一些东西,先供大家参考学习
图片:
代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
RSAKey();
}
private void bte_Click(object sender, EventArgs e)
{
if (tbpublic.Text == "")
{
return;
}
label4.Text = RSAEncrypt(tbpublic.Text.Trim(), textBox1.Text.Trim());
}
private void btd_Click(object sender, EventArgs e)
{
if (tbprivate.Text == "")
{
return;
}
textBox2.Text = RSADecrypt(tbprivate.Text.Trim(), label4.Text);
}
/// <summary>
/// 生成公私钥
/// </summary>
/// <param name="PrivateKeyPath"></param>
/// <param name="PublicKeyPath"></param>
public void RSAKey()
{
try
{
RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
tbprivate.Text = provider.ToXmlString(true);
tbpublic.Text = provider.ToXmlString(false);
}
catch (Exception exception)
{
throw exception;
}
}
/// <summary>
/// RSA解密
/// </summary>
/// <param name="xmlPrivateKey">私钥</param>
/// <param name="m_strDecryptString">待解密的数据</param>
/// <returns>解密后的结果</returns>
public string RSADecrypt(string xmlPrivateKey, string m_strDecryptString)
{
string str2;
try
{
RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
provider.FromXmlString(xmlPrivateKey);
byte[] rgb = Convert.FromBase64String(m_strDecryptString);
byte[] buffer2 = provider.Decrypt(rgb, false);
str2 = new UnicodeEncoding().GetString(buffer2);
}
catch (Exception exception)
{
throw exception;
}
return str2;
}
/// <summary>
/// RSA加密
/// </summary>
/// <param name="xmlPublicKey">公钥</param>
/// <param name="m_strEncryptString">MD5加密后的数据</param>
/// <returns>RSA公钥加密后的数据</returns>
public string RSAEncrypt(string xmlPublicKey, string m_strEncryptString)
{
string str2;
try
{
RSACryptoServiceProvider provider = new RSACryptoServiceProvider();
provider.FromXmlString(xmlPublicKey);
byte[] bytes = new UnicodeEncoding().GetBytes(m_strEncryptString);
str2 = Convert.ToBase64String(provider.Encrypt(bytes, false));
}
catch (Exception exception)
{
throw exception;
}
return str2;
}
}
下载地址: