码迷,mamicode.com
首页 > 其他好文 > 详细

基于RSA的加密/解密示例C#代码

时间:2014-07-24 10:15:03      阅读:249      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   re   

在C#程序中,大家可能比较熟悉的方式是md5加密解密方式,对RSA可能并不是很熟悉, 下面就说一下RSA加密和解密的算法:

 

using System;
using System.Security.Cryptography;
using System.Text;
class RSACSPSample
{
    static void Main()
    {
        try
        {
            string str_Plain_Text = "How are you?How are you?How are you?How are you?=-popopolA";
            Console.WriteLine("明文:" + str_Plain_Text);
            Console.WriteLine("长度:" + str_Plain_Text.Length.ToString());
            Console.WriteLine();
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
            string str_Public_Key;
            string str_Private_Key;
            string str_Cypher_Text = RSA_Encrypt(str_Plain_Text, out str_Public_Key,out str_Private_Key);
            Console.WriteLine("密文:" + str_Cypher_Text);
            Console.WriteLine("公钥:" + str_Public_Key);
            Console.WriteLine("私钥:" + str_Private_Key);
            string str_Plain_Text2 = RSA_Decrypt(str_Cypher_Text, str_Private_Key);
            Console.WriteLine("解密:" + str_Plain_Text2);
            Console.WriteLine();
        }
        catch (ArgumentNullException)
        {
            Console.WriteLine("Encryption failed.");
        }
    }
    //RSA加密,随机生成公私钥对并作为出参返回
    static public string RSA_Encrypt(string str_Plain_Text, out string str_Public_Key, out string str_Private_Key)
    {
        str_Public_Key = "";
        str_Private_Key = "";
        UnicodeEncoding ByteConverter = new UnicodeEncoding();
        byte[] DataToEncrypt = ByteConverter.GetBytes(str_Plain_Text);
        try
        {
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
            str_Public_Key = Convert.ToBase64String(RSA.ExportCspBlob(false));
            str_Private_Key = Convert.ToBase64String(RSA.ExportCspBlob(true));
          
            //OAEP padding is only available on Microsoft Windows XP or later. 
            byte[] bytes_Cypher_Text = RSA.Encrypt(DataToEncrypt, false);
            str_Public_Key = Convert.ToBase64String(RSA.ExportCspBlob(false));
            str_Private_Key = Convert.ToBase64String(RSA.ExportCspBlob(true));
            string str_Cypher_Text = Convert.ToBase64String(bytes_Cypher_Text);
            return str_Cypher_Text;
        }
        catch (CryptographicException e)
        {
            Console.WriteLine(e.Message);
            return null;
        }
    }
    //RSA解密
    static public string RSA_Decrypt(string str_Cypher_Text, string str_Private_Key)
    {
        byte[] DataToDecrypt = Convert.FromBase64String(str_Cypher_Text);
        try
        {
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
            //RSA.ImportParameters(RSAKeyInfo);
            byte[] bytes_Public_Key = Convert.FromBase64String(str_Private_Key);
            RSA.ImportCspBlob(bytes_Public_Key);
           
            //OAEP padding is only available on Microsoft Windows XP or later. 
            byte[] bytes_Plain_Text = RSA.Decrypt(DataToDecrypt, false);
            UnicodeEncoding ByteConverter = new UnicodeEncoding();
            string str_Plain_Text = ByteConverter.GetString(bytes_Plain_Text);
            return str_Plain_Text;
        }
        catch (CryptographicException e)
        {
            Console.WriteLine(e.ToString());
            return null;
        }
    }

} 

基于RSA的加密/解密示例C#代码,布布扣,bubuko.com

基于RSA的加密/解密示例C#代码

标签:style   blog   color   os   io   re   

原文地址:http://www.cnblogs.com/wolfocme110/p/3864818.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!