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