c#公钥加密私钥解密和验证

public partial class Form1 : Form {
        private string Estring;
        private string priKey;
        private string pubKey;
        public Form1()
        {
            InitializeComponent();
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            priKey = rsa.ToXmlString(true);
            pubKey = rsa.ToXmlString(false);
        }

        public static string RSAEncrypt(string publickey,string content) {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            byte[] cipherbytes;
            rsa.FromXmlString(publickey);
            cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(content), false);
            return Convert.ToBase64String(cipherbytes);

        }

        public static string RSADecrypt(string privateKey, string content)
        {
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            byte[] cipherbytes;
            rsa.FromXmlString(privateKey);
            cipherbytes = rsa.Decrypt(Convert.FromBase64String(content), false);
            return Encoding.UTF8.GetString(cipherbytes);

        }

        private void button1_Click(object sender, EventArgs e) {
            Estring = RSAEncrypt(pubKey, "Hi Bob");

        }

        private void button2_Click(object sender, EventArgs e) {
            string DString;
            DString = RSADecrypt(priKey, Estring);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            byte[] messagebytes = Encoding.UTF8.GetBytes("luo罗");
            RSACryptoServiceProvider oRSA = new RSACryptoServiceProvider();
            string privatekey = oRSA.ToXmlString(true);
            string publickey = oRSA.ToXmlString(false);

            //私钥签名  
            RSACryptoServiceProvider oRSA3 = new RSACryptoServiceProvider();
            oRSA3.FromXmlString(privatekey);
            byte[] AOutput = oRSA3.SignData(messagebytes, "SHA1");
            //公钥验证  
            RSACryptoServiceProvider oRSA4 = new RSACryptoServiceProvider();
            oRSA4.FromXmlString(publickey);
            bool bVerify = oRSA4.VerifyData(messagebytes, "SHA1", AOutput);  
            
        }
    }

 

posted @ 2013-05-16 13:36  Rain520  阅读(4996)  评论(0编辑  收藏  举报