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!!