C#实现RSA加密和解密详解

简介: 原文:C#实现RSA加密和解密详解RSA加密解密源码: using System; using System.Collections.Generic; using System.Linq; using System.
原文: C#实现RSA加密和解密详解

RSA加密解密源码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;

namespace MyRSA

namespace MyRSA

{

publicclass MyRSA

{



privatestaticstring publicKey =

   
"<RSAKeyValue><Modulus>6CdsXgYOyya/yQH"+

   
"TO96dB3gEurM2UQDDVGrZoe6RcAVTxAqDDf5L"+

   
"wPycZwtNOx3Cfy44/D5Mj86koPew5soFIz9sx"+

   
"PAHRF5hcqJoG+q+UfUYTHYCsMH2cnqGVtnQiE"+

   
"/PMRMmY0RwEfMIo+TDpq3QyO03MaEsDGf13sP"+

   
"w9YRXiac=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";

privatestaticstring privateKey =

   
"<RSAKeyValue><Modulus>6CdsXgYOyya/yQH"+

   
"TO96dB3gEurM2UQDDVGrZoe6RcAVTxAqDDf5L"+

   
"wPycZwtNOx3Cfy44/D5Mj86koPew5soFIz9sx"+

   
"PAHRF5hcqJoG+q+UfUYTHYCsMH2cnqGVtnQiE"+

   
"/PMRMmY0RwEfMIo+TDpq3QyO03MaEsDGf13sP"+

   
"w9YRXiac=</Modulus><Exponent>AQAB</Exponent>"+

   
"<P>/aoce2r6tonjzt1IQI6FM4ysR40j/gKvt4d"+

   
"L411pUop1Zg61KvCm990M4uN6K8R/DUvAQdrRd"+

   
"VgzvvAxXD7ESw==</P><Q>6kqclrEunX/fmOle"+

   
"VTxG4oEpXY4IJumXkLpylNR3vhlXf6ZF9obEpG"+

   
"lq0N7sX2HBxa7T2a0WznOAb0si8FuelQ==</Q>"+

   
"<DP>3XEvxB40GD5v/Rr4BENmzQW1MBFqpki6FU"+

   
"GrYiUd2My+iAW26nGDkUYMBdYHxUWYlIbYo6Te"+

   
"zc3d/oW40YqJ2Q==</DP><DQ>LK0XmQCmY/ArY"+

   
"gw2Kci5t51rluRrl4f5l+aFzO2K+9v3PGcndjA"+

   
"StUtIzBWGO1X3zktdKGgCLlIGDrLkMbM21Q==</DQ><InverseQ>"+

   
"GqC4Wwsk2fdvJ9dmgYlej8mTDBWg0Wm6aqb5kjn"+

   
"cWK6WUa6CfD+XxfewIIq26+4Etm2A8IAtRdwPl4"+

   
"aPjSfWdA==</InverseQ><D>a1qfsDMY8DSxB2D"+

   
"Cr7LX5rZHaZaqDXdO3GC01z8dHjI4dDVwOS5ZFZ"+

   
"s7MCN3yViPsoRLccnVWcLzOkSQF4lgKfTq3IH40"+

   
"H5N4gg41as9GbD0g9FC3n5IT4VlVxn9ZdW+WQry"+

   
"oHdbiIAiNpFKxL/DIEERur4sE1Jt9VdZsH24CJE=</D></RSAKeyValue>";



staticpublicstring Decrypt(string base64code)

{

   
try

   
{



       
//Create a UnicodeEncoder to convert between byte array and string.

        UnicodeEncoding ByteConverter =new UnicodeEncoding();



       
//Create a new instance of RSACryptoServiceProvider to generate

       
//public and private key data.

        RSACryptoServiceProvider RSA =new RSACryptoServiceProvider();

        RSA.FromXmlString(privateKey);



       
byte[] encryptedData;

       
byte[] decryptedData;

        encryptedData
= Convert.FromBase64String(base64code);



       
//Pass the data to DECRYPT, the private key information

       
//(using RSACryptoServiceProvider.ExportParameters(true),

       
//and a boolean flag specifying no OAEP padding.

        decryptedData = RSADecrypt(

            encryptedData, RSA.ExportParameters(
true), false);



       
//Display the decrypted plaintext to the console.

        return ByteConverter.GetString(decryptedData);

    }


   
catch (Exception exc)

   
{

       
//Exceptions.LogException(exc);

        Console.WriteLine(exc.Message);

       
return"";

    }


}




staticpublicstring Encrypt(string toEncryptString)

{

   
try

   
{

       
//Create a UnicodeEncoder to convert between byte array and string.

        UnicodeEncoding ByteConverter =new UnicodeEncoding();



       
//Create byte arrays to hold original, encrypted, and decrypted data.

        byte[] dataToEncrypt =

            ByteConverter.GetBytes(toEncryptString);

       
byte[] encryptedData;

       
byte[] decryptedData;



       
//Create a new instance of RSACryptoServiceProvider to generate

       
//public and private key data.

        RSACryptoServiceProvider RSA =new RSACryptoServiceProvider();



        RSA.FromXmlString(privateKey);



       
//Pass the data to ENCRYPT, the public key information

       
//(using RSACryptoServiceProvider.ExportParameters(false),

       
//and a boolean flag specifying no OAEP padding.

        encryptedData = RSAEncrypt(

            dataToEncrypt, RSA.ExportParameters(
false), false);



       
string base64code = Convert.ToBase64String(encryptedData);

       
return base64code;

    }


   
catch (Exception exc)

   
{

       
//Catch this exception in case the encryption did

       
//not succeed.

       
//Exceptions.LogException(exc);

        Console.WriteLine(exc.Message);

       
return"";

    }








}




staticprivatebyte[] RSAEncrypt(

   
byte[] DataToEncrypt,

    RSAParameters RSAKeyInfo,

   
bool DoOAEPPadding)

{

   
try

   
{

       
//Create a new instance of RSACryptoServiceProvider.

        RSACryptoServiceProvider RSA =new RSACryptoServiceProvider();



       
//Import the RSA Key information. This only needs

       
//toinclude the public key information.

        RSA.ImportParameters(RSAKeyInfo);



       
//Encrypt the passed byte array and specify OAEP padding. 

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

       
//later. 

        return RSA.Encrypt(DataToEncrypt, DoOAEPPadding);

    }


   
//Catch and display a CryptographicException 

   
//to the console.

    catch (CryptographicException e)

   
{

       
//Exceptions.LogException(e);

        Console.WriteLine(e.Message);



       
returnnull;

    }




}




staticprivatebyte[] RSADecrypt(

   
byte[] DataToDecrypt,

    RSAParameters RSAKeyInfo,

   
bool DoOAEPPadding)

{

   
try

   
{

       
//Create a new instance of RSACryptoServiceProvider.

        RSACryptoServiceProvider RSA =new RSACryptoServiceProvider();



       
//Import the RSA Key information. This needs

       
//to include the private key information.

        RSA.ImportParameters(RSAKeyInfo);



       
//Decrypt the passed byte array and specify OAEP padding. 

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

       
//later. 

        return RSA.Decrypt(DataToDecrypt, DoOAEPPadding);

    }


   
//Catch and display a CryptographicException 

   
//to the console.

    catch (CryptographicException e)

   
{

       
//Exceptions.LogException(e);

        Console.WriteLine(e.Message);



       
returnnull;

    }


}


}


}

 测试代码:

         static   void  Main( string [] args)
        {
            
string  encodeString  =  MyRSA.Encrypt( " 1234567 " );
            Console.WriteLine(encodeString);


            
string  decode  =  MyRSA.Decrypt(encodeString);
            Console.WriteLine(decode);

            Console.ReadLine();
        }
目录
相关文章
|
存储 安全 数据安全/隐私保护
打造安全防线!Python AES&RSA加密工具,黑客绕道走的秘籍
【9月更文挑战第9天】随着数字化时代的到来,信息安全问题日益凸显。本文将介绍如何使用Python结合AES与RSA两种加密算法,构建强大的加密工具。AES以其高效性和强安全性著称,适用于大量数据的快速加密;RSA作为非对称加密算法,在加密小量数据及实现数字签名方面表现卓越。通过整合两者,可以构建既安全又灵活的加密系统。首先,需要安装pycryptodome库。接着,实现AES加密与解密功能,最后利用RSA加密AES密钥,确保其安全传输。这种设计不仅提高了数据传输效率,还增强了密钥交换的安全性,为敏感数据提供坚实保护。
690 43
|
安全 算法 网络安全
浅谈非对称加密(RSA)
浅谈非对称加密(RSA)
871 0
|
存储 安全 算法
C#一分钟浅谈:数据加密与解密技术
【10月更文挑战第3天】在数字化时代,信息安全至关重要。数据加密作为保障信息不被未授权访问的有效手段,通过特定算法将明文转换为密文,确保即使数据被截获也难以解读。本文从基础概念入手,介绍C#中实现数据加密的方法,涵盖对称加密(如AES、DES)与非对称加密(如RSA),并通过具体示例代码演示如何使用`System.Security.Cryptography.Aes`类完成AES加密和解密过程。此外,还强调了密钥管理及安全策略的重要性。
407 4
|
算法 安全 网络安全
使用 Python 实现 RSA 加密
使用 Python 实现 RSA 加密
740 2
|
算法 安全 Go
RSA加密算法详解与Python和Go实现
RSA加密算法详解与Python和Go实现
2185 1
|
存储 安全 算法
RSA在手,安全我有!Python加密解密技术,让你的数据密码坚不可摧
【9月更文挑战第11天】在数字化时代,信息安全至关重要。传统的加密方法已难以应对日益复杂的网络攻击。RSA加密算法凭借其强大的安全性和广泛的应用场景,成为保护敏感数据的首选。本文介绍RSA的基本原理及在Python中的实现方法,并探讨其优势与挑战。通过使用PyCryptodome库,我们展示了RSA加密解密的完整流程,帮助读者理解如何利用RSA为数据提供安全保障。
810 5
|
安全 算法 数据安全/隐私保护
深度揭秘!Python加密技术的背后,AES与RSA如何守护你的数据安全
【9月更文挑战第10天】随着数字化时代的到来,数据安全成为企业和个人面临的重大挑战。Python 作为功能强大的编程语言,在数据加密领域扮演着重要角色。AES 和 RSA 是两种主流加密算法,分别以对称和非对称加密方式保障数据安全。AES(Advanced Encryption Standard)因其高效性和安全性,在数据加密中广泛应用;而 RSA 则利用公钥和私钥机制,在密钥交换和数字签名方面表现卓越。
459 4
|
安全 数据安全/隐私保护 Python
情书也能加密?Python AES&RSA,让每一份数据都充满爱的密码
【9月更文挑战第8天】在这个数字化时代,情书不再局限于纸笔,也可能以电子形式在网络中传递。为了确保其安全,Python提供了AES和RSA等加密工具,为情书编织爱的密码。首先,通过安装pycryptodome库,我们可以利用AES对称加密算法高效保护数据;接着,使用RSA非对称加密算法加密AES密钥和IV,进一步增强安全性。即使情书被截获,没有正确密钥也无法解读内容。让我们用Python为爱情编织一张安全的网,守护每份珍贵情感。
370 2
|
存储 安全 数据库
双重防护,无懈可击!Python AES+RSA加密方案,构建最强数据安全堡垒
【9月更文挑战第11天】在数字时代,数据安全至关重要。AES与RSA加密技术相结合,构成了一道坚固防线。AES以其高效性保障数据加密,而RSA则确保密钥安全传输,二者相辅相成,提供双重保护。本文通过Python代码示例展示了这一加密方案的魅力,强调了其在实际应用中的重要性和安全性。使用HTTPS等安全协议传输加密密钥和密文,确保数据在数字世界中自由流通而无忧。
688 1
|
安全 算法 数据安全/隐私保护
黑客克星!Python加密艺术大公开,AES、RSA双剑合璧,守护你的数字世界
在这个数据泛滥的时代,数字世界既充满了知识,也潜藏安全隐患。Python 作为强大的编程语言,以其独特的加密技术为我们的信息安全保驾护航。本文将介绍 AES 和 RSA 这两种加密算法,揭示它们如何协同工作,保护你的数字世界。AES(高级加密标准)以其高效、安全著称,能将敏感信息转化为难以破解的乱码。Python 的 `pycryptodome` 库让 AES 加密变得简单易行。然而,AES 面临密钥分发难题,此时 RSA(非对称加密算法)便大显身手,通过公钥加密、私钥解密的方式确保密钥传输安全。AES 与 RSA 在 Python 中交织成一道坚不可摧的防护网,共同守护我们的数字世界。
497 0