Es muy común que queramos encritar información para almacenarla, y cuando la necesitemos desencriptarla para utilizarla. A continuación les comparto métodos para hacer estas dos tareas de una forma muy sencilla.
public class Encryption
{
/// <summary>
/// Método para encriptar una cadena.
/// </summary>
/// <param name="inputString">Cadena a encriptar.</param>
/// <param name="key">Llave de encripción.</param>
/// <returns></returns>
public static String Encrypt(String inputString, String key)
{
Byte[] inputStringByte = System.Text.ASCIIEncoding.ASCII.GetBytes(inputString);
Byte[] keyByte = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
Byte[] iVByte = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
MemoryStream memoryStream = new MemoryStream(1024);
DESCryptoServiceProvider desCryptoServiceProvider = new DESCryptoServiceProvider();
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, desCryptoServiceProvider.CreateEncryptor(keyByte, iVByte), CryptoStreamMode.Write))
{
cryptoStream.Write(inputStringByte, 0, inputStringByte.Length);
cryptoStream.FlushFinalBlock();
Byte[] result = new Byte[(Int32)memoryStream.Position];
memoryStream.Position = 0;
memoryStream.Read(result, 0, result.Length);
cryptoStream.Close();
return System.Convert.ToBase64String(result);
}
}
/// <summary>
/// Método para desencriptar una cadena.
/// </summary>
/// <param name="inputString">Cadena a desencriptar.</param>
/// <param name="key">Llave de desencriptación.</param>
/// <returns></returns>
public static String Decrypt(String inputString, String key)
{
byte[] inputStringByte = System.Convert.FromBase64String(inputString);
byte[] keyByte = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
byte[] iVByte = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
MemoryStream memoryStream = new MemoryStream(inputStringByte.Length);
DESCryptoServiceProvider desCryptoServiceProvider = new DESCryptoServiceProvider();
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, desCryptoServiceProvider.CreateDecryptor(keyByte, iVByte), CryptoStreamMode.Read))
{
memoryStream.Write(inputStringByte, 0, inputStringByte.Length);
memoryStream.Position = 0;
string decrypted = new StreamReader(cryptoStream).ReadToEnd();
cryptoStream.Close();
return decrypted;
}
}
}