En esta ocasión voy a mostrar una forma rápida de realizar una encriptación usando el algoritmo MD5 y DES.
Vamos a utilizar 2 funciones, una de encriptará una cadena y la otra la desencriptará.
Hay que tener en cuenta que para simplificar utilizo una clave de cifrado muy sencilla «cadenadecifrado», lo suyo es emplear una con caracteres más complicados de «adivinar».
public string cifrar(string cadena) { string clave = "cadenadecifrado"; byte[] llave; //Arreglo donde guardaremos la llave para el cifrado 3DES. byte[] arreglo = UTF8Encoding.UTF8.GetBytes(cadena); //Arreglo donde guardaremos la cadena descifrada. // Ciframos utilizando el Algoritmo MD5. MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); llave = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(clave)); md5.Clear(); //Ciframos utilizando el Algoritmo 3DES. TripleDESCryptoServiceProvider tripledes = new TripleDESCryptoServiceProvider(); tripledes.Key = llave; tripledes.Mode = CipherMode.ECB; tripledes.Padding = PaddingMode.PKCS7; ICryptoTransform convertir = tripledes.CreateEncryptor(); // Iniciamos la conversión de la cadena byte[] resultado = convertir.TransformFinalBlock(arreglo, 0, arreglo.Length); //Arreglo de bytes donde guardaremos la cadena cifrada. tripledes.Clear(); return Convert.ToBase64String(resultado, 0, resultado.Length); // Convertimos la cadena y la regresamos. }
Una vez tenemos la cadena cifrada podemos descifrarla con:
public string descifrar(string cadena) { string clave = "cadenadecifrado"; byte[] llave; byte[] arreglo = Convert.FromBase64String(cadena); // Arreglo donde guardaremos la cadena descovertida. // Ciframos utilizando el Algoritmo MD5. MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); llave = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(clave)); md5.Clear(); //Ciframos utilizando el Algoritmo 3DES. TripleDESCryptoServiceProvider tripledes = new TripleDESCryptoServiceProvider(); tripledes.Key = llave; tripledes.Mode = CipherMode.ECB; tripledes.Padding = PaddingMode.PKCS7; ICryptoTransform convertir = tripledes.CreateDecryptor(); byte[] resultado = convertir.TransformFinalBlock(arreglo, 0, arreglo.Length); tripledes.Clear(); string cadena_descifrada = UTF8Encoding.UTF8.GetString(resultado); // Obtenemos la cadena return cadena_descifrada; // Devolvemos la cadena }