Created
September 28, 2014 12:00
-
-
Save Fhernd/a1dbf859090e7659a491 to your computer and use it in GitHub Desktop.
Clase para encriptar y desencriptar texto.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Security.Cryptography; | |
using System.Text; | |
using System.IO; | |
namespace Articulos.Pregunta.P1120 | |
{ | |
public class DESEncrypt | |
{ | |
// Crea la llave y el vector de inicialización para la | |
// contraseña de protección del contenido a | |
// encriptar o desencriptar usando un algoritmo basado | |
// en TripleDES: | |
public static TripleDES CrearDES(string clave) | |
{ | |
MD5 md5 = new MD5CryptoServiceProvider(); | |
TripleDES des = new TripleDESCryptoServiceProvider(); | |
des.Key = md5.ComputeHash(Encoding.Unicode.GetBytes(clave)); | |
des.IV = new byte[des.BlockSize / 8]; | |
return des; | |
} | |
// Encripta una cadena de caracteres usando una contraseña personalizada: | |
public string EncriptarCadenaDeCaracteres(string textoPlano, string contrasegnia) | |
{ | |
// Primero debemos convertir el texto plano en `textoPlano` | |
// en un arreglo de bytes: | |
byte[] textoPlanoBytes = Encoding.Unicode.GetBytes (textoPlano); | |
// Uso de un flujo de memoria para la contención de los bytes: | |
MemoryStream flujoMemoria = new MemoryStream(); | |
// Creación de la clave de protección y el vector de inicialización: | |
TripleDES des = CrearDES (contrasegnia); | |
// Creación del codificador para la escritura al flujo de memoria: | |
CryptoStream flujoEncriptacion = new CryptoStream (flujoMemoria, des.CreateEncryptor(), CryptoStreamMode.Write); | |
// Escritura del arreglo de bytes sobre el flujo de memoria: | |
flujoEncriptacion.Write (textoPlanoBytes, 0, textoPlanoBytes.Length); | |
flujoEncriptacion.FlushFinalBlock(); | |
// Retorna representación legible de la cadena encriptada: | |
return Convert.ToBase64String (flujoMemoria.ToArray()); | |
} | |
// Descripta una cadena encriptada usando una contraseña de protección: | |
public string DesencriptarCadenaDeCaracteres(string textoEncriptado, string contrasegnia) | |
{ | |
// Primero debemos convertir el texto plano en `textoPlano` | |
// en un arreglo de bytes: | |
byte[] bytesEncriptados = Convert.FromBase64String (textoEncriptado); | |
// Uso de un flujo de memoria para la contención de los bytes: | |
MemoryStream flujoMemoria = new MemoryStream(); | |
// Creación de la clave de protección y el vector de inicialización: | |
TripleDES des = CrearDES (contrasegnia); | |
// Creación de decodificador: | |
CryptoStream flujoDesencriptacion = new CryptoStream (flujoMemoria, des.CreateDecryptor(), CryptoStreamMode.Write); | |
// Escritura del arreglo de bytes sobre el flujo de memoria: | |
flujoDesencriptacion.Write (bytesEncriptados, 0, bytesEncriptados.Length); | |
flujoDesencriptacion.FlushFinalBlock(); | |
// Conversión del flujo de datos en una cadena de caracteres: | |
return Encoding.Unicode.GetString (flujoMemoria.ToArray()); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
CAGMkrnPgQS+sATN2zfEN5cURXnW5cCz920w649gyJjch3Ve3ZQ@mail.gmail.com> @