Mega Code Archive

 
Categories / C# / Security
 

Encryption Helper

//------------------------------------------------------------------------------ // The contents of this file are subject to the Microsoft Public License (Ms-PL) // You may obtain a copy of the License at http://psadmin.codeplex.com/license.  //  // Software distributed under the License is distributed on an "AS IS" basis,  // WITHOUT WARRANTY OF ANY KIND, either express or implied.  // See the License for the specific language governing rights and limitations  // under the License. //  // The initial developer is Ben Foster (ben.foster@retroviz.com) // Copyright (c) Retroviz Limited (http://www.retroviz.com). // All Rights Reserved. //------------------------------------------------------------------------------ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.Security; using System.Security.Cryptography; using System.IO; namespace PSAdmin.Core.Utils {     public class EncryptionHelper     {         private static string encryptionKey = "1234567890123451";                  public static string Decrypt(string CipherText) {             return Decrypt(CipherText, encryptionKey);         }         protected static string Decrypt(string CipherText, string EncryptionPrivateKey) {             if (String.IsNullOrEmpty(CipherText))                 return CipherText;             TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();             tDESalg.Key = new ASCIIEncoding().GetBytes(EncryptionPrivateKey.Substring(0, 16));             tDESalg.IV = new ASCIIEncoding().GetBytes(EncryptionPrivateKey.Substring(8, 8));             byte[] buffer = Convert.FromBase64String(CipherText);             string result = DecryptTextFromMemory(buffer, tDESalg.Key, tDESalg.IV);             return result;         }         public static string Encrypt(string PlainText) {             return Encrypt(PlainText, encryptionKey);         }         protected static string Encrypt(string PlainText, string EncryptionPrivateKey)         {             if (String.IsNullOrEmpty(PlainText))                 return PlainText;             TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();             tDESalg.Key = new ASCIIEncoding().GetBytes(EncryptionPrivateKey.Substring(0, 16));             tDESalg.IV = new ASCIIEncoding().GetBytes(EncryptionPrivateKey.Substring(8, 8));             byte[] encryptedBinary = EncryptTextToMemory(PlainText, tDESalg.Key, tDESalg.IV);             string result = Convert.ToBase64String(encryptedBinary);             return result;         }         private static byte[] EncryptTextToMemory(string Data, byte[] Key, byte[] IV)         {             MemoryStream mStream = new MemoryStream();             CryptoStream cStream = new CryptoStream(mStream, new TripleDESCryptoServiceProvider().CreateEncryptor(Key, IV), CryptoStreamMode.Write);             byte[] toEncrypt = new UnicodeEncoding().GetBytes(Data);             cStream.Write(toEncrypt, 0, toEncrypt.Length);             cStream.FlushFinalBlock();             byte[] ret = mStream.ToArray();             cStream.Close();             mStream.Close();             return ret;         }         private static string DecryptTextFromMemory(byte[] Data, byte[] Key, byte[] IV) {             MemoryStream msDecrypt = new MemoryStream(Data);             CryptoStream csDecrypt = new CryptoStream(msDecrypt, new TripleDESCryptoServiceProvider().CreateDecryptor(Key, IV), CryptoStreamMode.Read);             StreamReader sReader = new StreamReader(csDecrypt, new UnicodeEncoding());             return sReader.ReadLine();         }     } }