标签:
1.生成一对keys:
/// <summary> /// generate private key and public key arr[0] for private key arr[1] for public key /// </summary> /// <returns></returns> public static string[] GenerateKeys() { string[] sKeys = new String[2]; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); sKeys[0] = rsa.ToXmlString(true); sKeys[1] = rsa.ToXmlString(false); return sKeys; }
2.加密:
/// <summary> /// RSA Encrypt /// </summary> /// <param name="sSource" >Source string</param> /// <param name="sPublicKey" >public key</param> /// <returns></returns> public static string EncryptString(string sSource, string sPublicKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); string plaintext = sSource; rsa.FromXmlString(sPublicKey); byte[] cipherbytes; byte[] byteEn = rsa.Encrypt(Encoding.UTF8.GetBytes("a"), false); cipherbytes = rsa.Encrypt(Encoding.UTF8.GetBytes(plaintext), false); StringBuilder sbString = new StringBuilder(); for (int i = 0; i < cipherbytes.Length; i++) { sbString.Append(cipherbytes[i] + ","); } return sbString.ToString(); }
3. 解密:
/// <summary> /// RSA Decrypt /// </summary> /// <param name="sSource">Source string</param> /// <param name="sPrivateKey">Private Key</param> /// <returns></returns> public static string DecryptString(String sSource, string sPrivateKey) { RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(sPrivateKey); byte[] byteEn = rsa.Encrypt(Encoding.UTF8.GetBytes("a"), false); string[] sBytes = sSource.Split(‘,‘); for (int j = 0; j < sBytes.Length; j++) { if (sBytes[j] != "") { byteEn[j] = Byte.Parse(sBytes[j]); } } byte[] plaintbytes = rsa.Decrypt(byteEn, false); return Encoding.UTF8.GetString(plaintbytes); }
RSA加密解密源码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography; using System.Security; 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 { UnicodeEncoding ByteConverter = new UnicodeEncoding(); RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); RSA.FromXmlString(privateKey); byte[] encryptedData; byte[] decryptedData; encryptedData = Convert.FromBase64String(base64code); decryptedData = RSADecrypt(encryptedData, RSA.ExportParameters(true), false); return ByteConverter.GetString(decryptedData); } catch (Exception exc) { Console.WriteLine(exc.Message); return ""; } } static public string Encrypt(string toEncryptString) { try { UnicodeEncoding ByteConverter = new UnicodeEncoding(); byte[] dataToEncrypt = ByteConverter.GetBytes(toEncryptString); byte[] encryptedData; RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); RSA.FromXmlString(privateKey); encryptedData = RSAEncrypt(dataToEncrypt, RSA.ExportParameters(false), false); string base64code = Convert.ToBase64String(encryptedData); return base64code; } catch (Exception exc) { Console.WriteLine(exc.Message); return ""; } } static private byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) { try { RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); RSA.ImportParameters(RSAKeyInfo); return RSA.Encrypt(DataToEncrypt, DoOAEPPadding); } catch (CryptographicException e) { Console.WriteLine(e.Message); return null; } } static private byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) { try { RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); RSA.ImportParameters(RSAKeyInfo); return RSA.Decrypt(DataToDecrypt, DoOAEPPadding); } catch (CryptographicException e) { Console.WriteLine(e.Message); return null; } } } }
转载自:http://www.cnblogs.com/amylis_chen/p/3641638.html
标签:
原文地址:http://www.cnblogs.com/guohu/p/5562840.html