/// <summary> /// Devuelve el valor original de una cadena cifrada /// </summary> /// <param name="TextoEncriptado"></param> /// <param name="Llave"></param> /// <returns></returns> public string Descifrar(string TextoEncriptado, string Llave = "") { if (string.IsNullOrEmpty(Llave)) { Llave = new ConfiguracionDAO().GetValorConfiguracion(Enumeracion.EnumSysConfiguracion.LlaveCifradoUsuario); } byte[] llaveArreglo, resultadoArreglo; var arregloDescifrado = Convert.FromBase64String(TextoEncriptado); using (var objHashMd5 = new MD5CryptoServiceProvider()) { llaveArreglo = objHashMd5.ComputeHash(Encoding.UTF8.GetBytes(Llave)); } using (var objTdes = new TripleDESCryptoServiceProvider { Key = llaveArreglo, Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 }) { var objCTransform = objTdes.CreateDecryptor(); resultadoArreglo = objCTransform.TransformFinalBlock(arregloDescifrado, 0, arregloDescifrado.Length); } return(Encoding.UTF8.GetString(resultadoArreglo)); }
/// <summary> /// Devuelve el valor asociado a una cadena cifrada /// </summary> /// <param name="Texto"></param> /// <param name="Llave"></param> /// <returns></returns> public string Cifrar(string Texto, string Llave = "") { if (string.IsNullOrEmpty(Llave)) { Llave = new ConfiguracionDAO().GetValorConfiguracion(Enumeracion.EnumSysConfiguracion.LlaveCifradoUsuario); } byte[] llaveArreglo, textoArreglo, textoCifrado; using (var objHashMd5 = new MD5CryptoServiceProvider()) { textoArreglo = Encoding.UTF8.GetBytes(Texto); llaveArreglo = objHashMd5.ComputeHash(Encoding.UTF8.GetBytes(Llave)); } using (var objTdes = new TripleDESCryptoServiceProvider { Key = llaveArreglo, Mode = CipherMode.ECB, Padding = PaddingMode.PKCS7 }) { var objCTransform = objTdes.CreateEncryptor(); textoCifrado = objCTransform.TransformFinalBlock(textoArreglo, 0, textoArreglo.Length); } //se regresa el resultado en forma de una cadena return(Convert.ToBase64String(textoCifrado, 0, textoCifrado.Length)); }