public class Encrypt { string key = "ABCDEFG54669525PQRSTUVWXYZabcdef852846opqrstuvwxyz"; public string EncryptKey(string cadena) { //arreglo de bytes donde guardaremos la llave byte[] keyArray; //arreglo de bytes donde guardaremos el texto //que vamos a encriptar byte[] Arreglo_a_Cifrar = UTF8Encoding.UTF8.GetBytes(cadena); //se utilizan las clases de encriptación //provistas por el Framework //Algoritmo MD5 MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); //se guarda la llave para que se le realice //hashing keyArray = hashmd5.ComputeHash( UTF8Encoding.UTF8.GetBytes(key)); hashmd5.Clear(); //Algoritmo 3DAS TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); tdes.Key = keyArray; tdes.Mode = CipherMode.ECB; tdes.Padding = PaddingMode.PKCS7; //se empieza con la transformación de la cadena ICryptoTransform cTransform = tdes.CreateEncryptor(); //arreglo de bytes donde se guarda la //cadena cifrada byte[] ArrayResultado = cTransform.TransformFinalBlock(Arreglo_a_Cifrar, 0, Arreglo_a_Cifrar.Length); tdes.Clear(); //se regresa el resultado en forma de una cadena return Convert.ToBase64String(ArrayResultado, 0, ArrayResultado.Length); } public string DecryptKey(string clave) { byte[] keyArray; //convierte el texto en una secuencia de bytes byte[] Array_a_Descifrar = Convert.FromBase64String(clave); //se llama a las clases que tienen los algoritmos //de encriptación se le aplica hashing //algoritmo MD5 MD5CryptoServiceProvider hashmd5 = new MD5CryptoServiceProvider(); keyArray = hashmd5.ComputeHash( UTF8Encoding.UTF8.GetBytes(key)); hashmd5.Clear(); TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider(); tdes.Key = keyArray; tdes.Mode = CipherMode.ECB; tdes.Padding = PaddingMode.PKCS7; ICryptoTransform cTransform = tdes.CreateDecryptor(); byte[] resultArray = cTransform.TransformFinalBlock(Array_a_Descifrar, 0, Array_a_Descifrar.Length); tdes.Clear(); //se regresa en forma de cadena return UTF8Encoding.UTF8.GetString(resultArray); } }
miércoles, 12 de septiembre de 2012
Encriptar y Desencriptar en C#
Clase para encriptar y desencriptar cadena de texto
Suscribirse a:
Enviar comentarios (Atom)
el encriptado y desencriptado es MD5??? y como lo llamas mandandole la variable??
ResponderEliminarHola, el encriptado no es MD5, para llamarlo y pasarle la variable podes usar (Ya que es una clase):
ResponderEliminarstring Contrasenia = "ProgramandoDesdeCero";
string Resultado = new Encrypt().EncryptKey(Contrasenia);
//O
Encrypt ClaseEncriptado = new Encrypt();
Resultado = ClaseEncriptado.EncryptKey(Contrasenia);
Si queres MD5 podes usar la siguiente función (MD5 = No se puede desencriptar):
public string md5(string password)
{
//Declaraciones
System.Security.Cryptography.MD5 md5;
md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
//Conversion
Byte[] encodedBytes = md5.ComputeHash(ASCIIEncoding.Default.GetBytes(password)); //genero el hash a partir de la password original
//Resultado
//return BitConverter.ToString(encodedBytes); //esto, devuelve el hash con "-" cada 2 char
return System.Text.RegularExpressions.Regex.Replace(BitConverter.ToString(encodedBytes).ToLower(), @"-", ""); //devuelve el hash continuo y en minuscula. (igual que en php)
}
Saludos!!