Guest

RSA Encryption Class

By: a guest on Jul 12th, 2010  |  syntax: C#  |  size: 8.05 KB  |  hits: 259  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Security.Cryptography;
  7. using System.Xml;
  8.  
  9. namespace wComm.Crypto
  10. {
  11.     public class RSA
  12.     {
  13.         public RSA(string keyModifier, KeyStrength s)
  14.         {
  15.             CONTAINER_NAME = keyModifier;
  16.             KEY_STRENGTH = s;
  17.             AssignParameter();
  18.         }
  19.  
  20.         private void CheckValidation()
  21.         {
  22.             if (String.IsNullOrEmpty(CONTAINER_NAME))
  23.             {
  24.                 throw new Exception("keyModifier Cannot be null or empty.");
  25.             }
  26.         }
  27.  
  28.         #region Vars
  29.  
  30.         private RSACryptoServiceProvider rsa;
  31.         public enum KeyStrength{ _128 = 128, _256 = 256, _512 = 512, _768 = 768, _1024 = 1024, _2048 = 2048 };
  32.  
  33.         private string _CONTAINER_NAME;
  34.         public string CONTAINER_NAME
  35.         {
  36.             get { return _CONTAINER_NAME; }
  37.             set { _CONTAINER_NAME = value; }
  38.         }
  39.  
  40.         private KeyStrength _KEY_STRENGTH;
  41.         public KeyStrength KEY_STRENGTH
  42.         {
  43.             get { return _KEY_STRENGTH; }
  44.             set { _KEY_STRENGTH = value; }
  45.         }
  46.  
  47.         #endregion
  48.  
  49.         #region Misc
  50.  
  51.         private void AssignParameter()
  52.         {
  53.             CheckValidation();
  54.            
  55.             CspParameters cspParams;
  56.             cspParams = new CspParameters((int)KEY_STRENGTH);
  57.             cspParams.KeyContainerName = CONTAINER_NAME;
  58.             cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
  59.             cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
  60.             rsa = new RSACryptoServiceProvider(cspParams);
  61.         }
  62.  
  63.         public void AssignNewKeys(string privateKeyLocation, string publicKeyLocation)
  64.         {
  65.             AssignParameter();
  66.  
  67.             StreamWriter writer = new StreamWriter(privateKeyLocation);
  68.             string publicPrivateKeyXML = rsa.ToXmlString(true);
  69.             writer.Write(publicPrivateKeyXML);
  70.             writer.Close();
  71.  
  72.             writer = new StreamWriter(publicKeyLocation);
  73.             string publicOnlyKeyXML = rsa.ToXmlString(false);
  74.             writer.Write(publicOnlyKeyXML);
  75.             writer.Close();
  76.  
  77.         }
  78.  
  79.         #endregion
  80.  
  81.         #region Encrypt
  82.  
  83.         public Byte[] EncryptDataToByteArray(string data2Encrypt, string publicKey)
  84.         {
  85.             CheckValidation();
  86.             AssignParameter();
  87.  
  88.             rsa.FromXmlString(publicKey);
  89.  
  90.             byte[] plainbytes = System.Text.Encoding.UTF8.GetBytes(data2Encrypt);
  91.             return rsa.Encrypt(plainbytes, false);
  92.         }
  93.  
  94.         public Byte[] EncryptDataToByteArray(Byte[] data2Encrypt, string publicKey)
  95.         {
  96.             CheckValidation();
  97.             AssignParameter();
  98.  
  99.             rsa.FromXmlString(publicKey);
  100.  
  101.             byte[] plainbytes = data2Encrypt;
  102.             return rsa.Encrypt(plainbytes, false);
  103.         }
  104.  
  105.         public Byte[] EncryptDataToByteArray(string data2Encrypt, XmlDocument publicKey)
  106.         {
  107.             CheckValidation();
  108.             AssignParameter();
  109.  
  110.             rsa.FromXmlString(publicKey.InnerXml);
  111.  
  112.             byte[] plainbytes = System.Text.Encoding.UTF8.GetBytes(data2Encrypt);
  113.             return rsa.Encrypt(plainbytes, false);
  114.         }
  115.  
  116.         public Byte[] EncryptDataToByteArray(Byte[] data2Encrypt, XmlDocument publicKey)
  117.         {
  118.             CheckValidation();
  119.             AssignParameter();
  120.  
  121.             rsa.FromXmlString(publicKey.InnerXml);
  122.  
  123.             byte[] plainbytes = data2Encrypt;
  124.             return rsa.Encrypt(plainbytes, false);
  125.         }
  126.  
  127.         public string EncryptDataToString(string data2Encrypt, string publicKey)
  128.         {
  129.             CheckValidation();
  130.             AssignParameter();
  131.  
  132.             rsa.FromXmlString(publicKey);
  133.  
  134.             byte[] plainbytes = System.Text.Encoding.UTF8.GetBytes(data2Encrypt);
  135.             byte[] cipherbytes = rsa.Encrypt(plainbytes, false);
  136.             return Convert.ToBase64String(cipherbytes);
  137.         }
  138.  
  139.         public string EncryptDataToString(Byte[] data2Encrypt, string publicKey)
  140.         {
  141.             CheckValidation();
  142.             AssignParameter();
  143.  
  144.             rsa.FromXmlString(publicKey);
  145.  
  146.             byte[] plainbytes = data2Encrypt;
  147.             byte[] cipherbytes = rsa.Encrypt(plainbytes, false);
  148.             return Convert.ToBase64String(cipherbytes);
  149.         }
  150.  
  151.         public string EncryptDataToString(string data2Encrypt, XmlDocument publicKey)
  152.         {
  153.             CheckValidation();
  154.             AssignParameter();
  155.  
  156.             rsa.FromXmlString(publicKey.InnerXml);
  157.  
  158.             byte[] plainbytes = System.Text.Encoding.UTF8.GetBytes(data2Encrypt);
  159.             byte[] cipherbytes = rsa.Encrypt(plainbytes, false);
  160.             return Convert.ToBase64String(cipherbytes);
  161.         }
  162.  
  163.         public string EncryptDataToString(Byte[] data2Encrypt, XmlDocument publicKey)
  164.         {
  165.             CheckValidation();
  166.             AssignParameter();
  167.  
  168.             rsa.FromXmlString(publicKey.InnerXml);
  169.  
  170.             byte[] plainbytes = data2Encrypt;
  171.             byte[] cipherbytes = rsa.Encrypt(plainbytes, false);
  172.             return Convert.ToBase64String(cipherbytes);
  173.         }
  174.  
  175.         #endregion
  176.  
  177.         #region Decrypt
  178.  
  179.         public string DecryptDataToByteArray(string data2Decrypt, string privateKey)
  180.         {
  181.             AssignParameter();
  182.  
  183.             byte[] getpassword = Convert.FromBase64String(data2Decrypt);
  184.  
  185.             rsa.FromXmlString(privateKey);
  186.  
  187.             byte[] plain = rsa.Decrypt(getpassword, false);
  188.             return System.Text.Encoding.UTF8.GetString(plain);
  189.  
  190.         }
  191.  
  192.         public string DecryptDataToByteArray(Byte[] data2Decrypt, string privateKey)
  193.         {
  194.             AssignParameter();
  195.  
  196.             byte[] getpassword = data2Decrypt;
  197.  
  198.             rsa.FromXmlString(privateKey);
  199.  
  200.             byte[] plain = rsa.Decrypt(getpassword, false);
  201.             return System.Text.Encoding.UTF8.GetString(plain);
  202.  
  203.         }
  204.  
  205.         public Byte[] DecryptDataToString(string data2Decrypt, string privateKey)
  206.         {
  207.             AssignParameter();
  208.  
  209.             byte[] getpassword = Convert.FromBase64String(data2Decrypt);
  210.  
  211.             rsa.FromXmlString(privateKey);
  212.  
  213.             return rsa.Decrypt(getpassword, false);
  214.  
  215.         }
  216.  
  217.         public Byte[] DecryptDataToString(Byte[] data2Decrypt, string privateKey)
  218.         {
  219.             AssignParameter();
  220.  
  221.             byte[] getpassword = data2Decrypt;
  222.  
  223.             rsa.FromXmlString(privateKey);
  224.  
  225.             return rsa.Decrypt(getpassword, false);
  226.  
  227.         }
  228.  
  229.         public string DecryptDataToByteArray(string data2Decrypt, XmlDocument privateKey)
  230.         {
  231.             AssignParameter();
  232.  
  233.             byte[] getpassword = Convert.FromBase64String(data2Decrypt);
  234.  
  235.             rsa.FromXmlString(privateKey.InnerXml);
  236.  
  237.             byte[] plain = rsa.Decrypt(getpassword, false);
  238.             return System.Text.Encoding.UTF8.GetString(plain);
  239.  
  240.         }
  241.  
  242.         public string DecryptDataToByteArray(Byte[] data2Decrypt, XmlDocument privateKey)
  243.         {
  244.             AssignParameter();
  245.  
  246.             byte[] getpassword = data2Decrypt;
  247.  
  248.             rsa.FromXmlString(privateKey.InnerXml);
  249.  
  250.             byte[] plain = rsa.Decrypt(getpassword, false);
  251.             return System.Text.Encoding.UTF8.GetString(plain);
  252.  
  253.         }
  254.  
  255.         public Byte[] DecryptDataToString(string data2Decrypt, XmlDocument privateKey)
  256.         {
  257.             AssignParameter();
  258.  
  259.             byte[] getpassword = Convert.FromBase64String(data2Decrypt);
  260.  
  261.             rsa.FromXmlString(privateKey.InnerXml);
  262.  
  263.             return rsa.Decrypt(getpassword, false);
  264.  
  265.         }
  266.  
  267.         public Byte[] DecryptDataToString(Byte[] data2Decrypt, XmlDocument privateKey)
  268.         {
  269.             AssignParameter();
  270.  
  271.             byte[] getpassword = data2Decrypt;
  272.  
  273.             rsa.FromXmlString(privateKey.InnerXml);
  274.  
  275.             return rsa.Decrypt(getpassword, false);
  276.  
  277.         }
  278.  
  279.         #endregion
  280.     }
  281. }