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(); } } }