using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Security.Cryptography;
using System.IO;
using System.Xml;namespace 文件加解密系统
{
class RSAEncryption
{
public void ExportKey()
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
FileStream fw = new FileStream(@"C:\Users\Administrator\Documents\Visual Studio 2010\Projects\a\RsaPublicXml.xml", FileMode.Create);
string pk=rsa.ToXmlString(false);
byte[] pubk = Encoding.UTF8.GetBytes(pk);
fw.Write(pubk,0,pubk.Length);
fw.Close();
FileStream fw1 = new FileStream(@"C:\Users\Administrator\Documents\Visual Studio 2010\Projects\a\RsaPrivate.xml", FileMode.Create);
StreamWriter RsaPrivate = new StreamWriter(fw1);
RsaPrivate.Write(rsa.ToXmlString(true));
RsaPrivate.Flush();
RsaPrivate.Close();
}
public static byte[] RSAEncrypt(string plainText)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
FileStream fw = new FileStream(@"C:\Users\Administrator\Documents\Visual Studio 2010\Projects\a\RsaPublicXml.xml",FileMode.Open);
StreamReader pk = new StreamReader(fw);
rsa.FromXmlString(pk.ReadToEnd());
byte[] result = rsa.Encrypt(System.Text.Encoding.Default.GetBytes(plainText),false);
return result;
}
public static string RSADecrypt(string text)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
StreamReader sr = new StreamReader(@"C:\Users\Administrator\Documents\Visual Studio 2010\Projects\a\RsaPrivateXml.xml", true);
rsa.FromXmlString(sr.ReadToEnd());
sr.Close();
byte[] cipher=Encoding.UTF8.GetBytes(text);
byte[] bytkey=new byte[128];
for(int i=0;i<cipher.Length;i++)
{
bytkey[i]=cipher[i];
}
byte[] result=rsa.Decrypt(bytkey,false);
return System.Text.Encoding.Default.GetString(result);
}
}
}
这个是详细的写法
http://blog.csdn.net/llwinnner/article/details/4011936