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);
        }
    }
}