天天看點

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

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

/**//*

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

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

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

 * (采用字元串作為參數)RSA_Demo2

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

 * 

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

 * 夏春濤 Email:[email protected] 

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

 * Blog:http://bluesky521.cnblogs.com

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

 * 運作環境:.net2.0 framework

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

 * 備注:

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

 * 不對稱算法通常用于加密少量資料,如加密對稱密鑰和 IV。通常,

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

 * 執行不對稱加密的個人使用由另一方生成的公鑰。.NET Framework 

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

 * 為此目的而提供了 RSACryptoServiceProvider 類。

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

 */

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

using System;

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

using System.Security.Cryptography;

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

using System.Text;

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

class RSACSPSample

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

{

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

    static void Main()

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

        try

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

            string str_Plain_Text = "How are you?How are you?How are you?How are you?=-popopolA";

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

            Console.WriteLine("明文:" + str_Plain_Text);

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

            Console.WriteLine("長度:" + str_Plain_Text.Length.ToString());

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

            Console.WriteLine();

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

            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

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

            string str_Public_Key;

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

            string str_Private_Key;

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

            string str_Cypher_Text = RSA_Encrypt(str_Plain_Text, out str_Public_Key,out str_Private_Key);

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

            Console.WriteLine("密文:" + str_Cypher_Text);

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

            Console.WriteLine("公鑰:" + str_Public_Key);

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

            Console.WriteLine("私鑰:" + str_Private_Key);

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

            string str_Plain_Text2 = RSA_Decrypt(str_Cypher_Text, str_Private_Key);

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

            Console.WriteLine("解密:" + str_Plain_Text2);

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

        }

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

        catch (ArgumentNullException)

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

            Console.WriteLine("Encryption failed.");

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

    }

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

    //RSA加密,随機生成公私鑰對并作為出參傳回

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

    static public string RSA_Encrypt(string str_Plain_Text, out string str_Public_Key, out string str_Private_Key)

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

        str_Public_Key = "";

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

        str_Private_Key = "";

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

        UnicodeEncoding ByteConverter = new UnicodeEncoding();

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

        byte[] DataToEncrypt = ByteConverter.GetBytes(str_Plain_Text);

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

            str_Public_Key = Convert.ToBase64String(RSA.ExportCspBlob(false));

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

            str_Private_Key = Convert.ToBase64String(RSA.ExportCspBlob(true));

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

            //OAEP padding is only available on Microsoft Windows XP or later.  

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

            byte[] bytes_Cypher_Text = RSA.Encrypt(DataToEncrypt, false);

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

            string str_Cypher_Text = Convert.ToBase64String(bytes_Cypher_Text);

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

            return str_Cypher_Text;

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

        catch (CryptographicException e)

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

            Console.WriteLine(e.Message);

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

            return null;

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

    //RSA解密

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

    static public string RSA_Decrypt(string str_Cypher_Text, string str_Private_Key)

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

        byte[] DataToDecrypt = Convert.FromBase64String(str_Cypher_Text);

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

            //RSA.ImportParameters(RSAKeyInfo);

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

            byte[] bytes_Public_Key = Convert.FromBase64String(str_Private_Key);

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

            RSA.ImportCspBlob(bytes_Public_Key);

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

            byte[] bytes_Plain_Text = RSA.Decrypt(DataToDecrypt, false);

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

            UnicodeEncoding ByteConverter = new UnicodeEncoding();

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

            string str_Plain_Text = ByteConverter.GetString(bytes_Plain_Text);

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

            return str_Plain_Text;

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

            Console.WriteLine(e.ToString());

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

}

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

備注:經測試明文長度超過58時會出現異常.

繼續閱讀