C#实现RSA加密解密源码

来源:互联网 发布:wap淘宝流量来源安全吗 编辑:程序博客网 时间:2024/06/02 05:31

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();
        }
原创粉丝点击