Home
Manage Your Code
Snippet: Encryption (C#)
Title: Encryption Language: C#
Description: code for encryption and decryption Views: 1542
Author: Abison Mathew Jose Date Added: 11/4/2008
Copy Code  
1using System;
2using System.Collections.Generic;
3using System.Text;
4using System.Security.Cryptography;
5using System.Configuration;
6
7namespace Cybernetics.CRM40.Office.Word_2007.Add_in
8{
9    public class CryptorEngine
10    {
11        private static string m_Key = "Cybernetics CRM 4.0 Word Addin";
12
13        /// <summary>
14        /// Encrypt a string using dual encryption method. Return a encrypted cipher Text
15        /// </summary>
16        /// <param name="toEncrypt">string to be encrypted</param>
17        /// <param name="useHashing">use hashing? send to for extra secirity</param>
18        /// <returns></returns>
19        public static string Encrypt(string toEncrypt, bool useHashing)
20        {
21            byte[] keyArray;
22            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);
23
24            System.Configuration.AppSettingsReader settingsReader = new AppSettingsReader();
25            // Get the key from config file
26            
27            //System.Windows.Forms.MessageBox.Show(key);
28            if (useHashing)
29            {
30                MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
31                keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(m_Key));
32                hashmd5.Clear();
33            }
34            else
35                keyArray = UTF8Encoding.UTF8.GetBytes(m_Key);
36
37            TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
38            tdes.Key = keyArray;
39            tdes.Mode = CipherMode.ECB;
40            tdes.Padding = PaddingMode.PKCS7;
41
42            ICryptoTransform cTransform = tdes.CreateEncryptor();
43            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
44            tdes.Clear();
45            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
46        }
47        /// <summary>
48        /// DeCrypt a string using dual encryption method. Return a DeCrypted clear string
49        /// </summary>
50        /// <param name="cipherString">encrypted string</param>
51        /// <param name="useHashing">Did you use hashing to encrypt this data? pass true is yes</param>
52        /// <returns></returns>
53        public static string Decrypt(string cipherString, bool useHashing)
54        {
55            byte[] keyArray;
56            byte[] toEncryptArray = Convert.FromBase64String(cipherString);
57           
58            if (useHashing)
59            {
60                MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider();
61                keyArray = hashmd5.ComputeHash(UTF8Encoding.UTF8.GetBytes(m_Key));
62                hashmd5.Clear();
63            }
64            else
65                keyArray = UTF8Encoding.UTF8.GetBytes(m_Key);
66
67            TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
68            tdes.Key = keyArray;
69            tdes.Mode = CipherMode.ECB;
70            tdes.Padding = PaddingMode.PKCS7;
71
72            ICryptoTransform cTransform = tdes.CreateDecryptor();
73            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
74                        
75            tdes.Clear();
76            return UTF8Encoding.UTF8.GetString(resultArray);
77        }
78    }
79}
80