Encrypting strings in C#

In ASP.NET you may be required to encrypt and decrypt information, such as users bank details. This code allows you encrpyt and decrypt thw messages using C# code and the in-build .Net framework namescape: System.Security.Cryptography.

This allows you to encrypt and decrypt strings using a key (usually stored in the web.config):

namespace CoralWebSolutions.EncryptionUtils
{
       public static class EncryptionUtils
       {
               private static byte[] _Key;
               private static byte[] _IV;
               private static byte[] _Salt = { 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x5, 0x4, 0x3, 0x2, 0x1, 0x0 };

               static EncryptionUtils()
               {
                       // load key from somewhere e.g. web.config
                       string privateKey = "alksdjfalsjf";

                       var keygen = new Rfc2898DeriveBytes(privateKey, _Salt);
                       _Key = keygen.GetBytes(16);
                       _IV = keygen.GetBytes(16);
               }

               public static string Encrypt(string data)
               {
                       byte[] cipherText;

                       RijndaelManaged algorithm = new RijndaelManaged();
                       algorithm.Key = _Key;
                       algorithm.IV = _IV;

                       using (MemoryStream msEncrypt = new MemoryStream())
                       {
                               using (CryptoStream csEncrypt = new CryptoStream(msEncrypt,
                               algorithm.CreateEncryptor(), CryptoStreamMode.Write))
                               {
                                       using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                                       {
                                               swEncrypt.Write(data);
                                       }
                                       cipherText = msEncrypt.ToArray();
                               }
                       }

                       return Convert.ToBase64String(cipherText);
               }

               public static string Decrypt(string cipherText)
               {
                       string decryptedText;

                       RijndaelManaged algorithm = new RijndaelManaged();
                       algorithm.Key = _Key;
                       algorithm.IV = _IV;

                       using (MemoryStream msEncrypt = new MemoryStream(Convert.FromBase64String(cipherText)))
                       {
                               using (CryptoStream csDecrypt = new CryptoStream(msEncrypt,
                               algorithm.CreateDecryptor(), CryptoStreamMode.Read))
                               {
                                       using (StreamReader swDecrypt = new StreamReader(csDecrypt))
                                       {
                                               decryptedText = swDecrypt.ReadToEnd();
                                       }
                               }
                       }
                       return decryptedText;
               }
       }
}

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>