C#实现RSA加密解密源码

RSA加密解密源码:

 
 
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; namespace MyRSA { public class MyRSA { private static string publicKey = "<RSAKeyValue><Modulus>6CdsXgYOyya/yQH" + "TO96dB3gEurM2UQDDVGrZoe6RcAVTxAqDDf5L" + "wPycZwtNOx3Cfy44/D5Mj86koPew5soFIz9sx" + "PAHRF5hcqJoG+q+UfUYTHYCsMH2cnqGVtnQiE" + "/PMRMmY0RwEfMIo+TDpq3QyO03MaEsDGf13sP" + "w9YRXiac=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>"; private static string 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>"; static public string 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 ""; } } static public string 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 ""; } } static private byte[] 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); return null; } } static private byte[] 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); return null; } } } }


 测试代码:

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


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

            Console.ReadLine();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值