public string Encriptar(Valor llave, Valor palabra, EnumAlgoritmo algoritmo)
        {
            byte[] keyArray;
            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(palabra.ToString());

            keyArray = UTF8Encoding.UTF8.GetBytes(llave.ToString());

            byte[] resultArray;
            try
            {
                using (SymmetricAlgorithm symmetricAlgorithm = ProveedorAlgoritmo(algoritmo))
                {
                    symmetricAlgorithm.Key = keyArray;
                    symmetricAlgorithm.IV = IV(algoritmo);
                    symmetricAlgorithm.Padding = PaddingMode.Zeros;

                    ICryptoTransform cTransform = symmetricAlgorithm.CreateEncryptor();
                    resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }
        private Valor XOR(Valor llave1, Valor llave2)
        {
            byte[] llaveArray1 = ASCIIEncoding.ASCII.GetBytes(llave1.ToString());
            byte[] llaveArray2 = ASCIIEncoding.ASCII.GetBytes(llave2.ToString());

            BitArray bitArray1 = new BitArray(llaveArray1);
            BitArray bitArray2 = new BitArray(llaveArray2);

            BitArray bitArrayResultado=bitArray1.Xor(bitArray2);

            byte[] llaveArrayResultado = ToByteArray(bitArrayResultado);

            string resultado = Convert.ToBase64String(llaveArrayResultado, 0, llaveArrayResultado.Length);

            return new Caracter(resultado);
        }
        private bool EvaluarInclusionPorCondicion(int condicion, string valorValidacion, Valor valorCampoMensaje)
        {
            bool validacion;

            string valorAlfanumerico = valorCampoMensaje.ToString();
            int valorNumerico;
            int valorValidacionNumerico;
            bool valorCampoEsNumero = int.TryParse(valorAlfanumerico, out valorNumerico);
            bool valorValidacionEsNumero = int.TryParse(valorValidacion, out valorValidacionNumerico);

            switch (condicion)
            {
                case (int)EnumCondicion.Diferente:
                    validacion = (valorValidacion != valorAlfanumerico);
                    break;
                case (int)EnumCondicion.Igual:
                    validacion = (valorValidacion == valorAlfanumerico);
                    break;
                case (int)EnumCondicion.Mayor:
                    validacion = (valorCampoEsNumero && valorValidacionEsNumero && valorNumerico > valorValidacionNumerico);
                    break;
                case (int)EnumCondicion.MayorIgual:
                    validacion = (valorCampoEsNumero && valorValidacionEsNumero && valorNumerico >= valorValidacionNumerico);
                    break;
                case (int)EnumCondicion.Menor:
                    validacion = (valorCampoEsNumero && valorValidacionEsNumero && valorNumerico < valorValidacionNumerico);
                    break;
                case (int)EnumCondicion.MenorIgual:
                    validacion = (valorCampoEsNumero && valorValidacionEsNumero && valorNumerico <= valorValidacionNumerico);
                    break;
                default:
                    validacion = false;
                    break;
            }
            return validacion;
        }
 private bool EvaluarComponente(string componente, string clase, string metodo, Valor valor)
 {
     object resultado= DllDinamica.Ejecutar(componente,clase,metodo,new[]{valor.ToString()});
     return Convert.ToBoolean(resultado);
 }
 private bool EvaluarProcedimiento(string procedimiento, Valor valor)
 {
     return FactoryDa.ValidarProcedure(procedimiento,valor.ToString());
 }
 private bool EvaluarInclusionPorTabla(string tabla, string columna, Valor valor)
 {
     return FactoryDa.ExisteEnTabla(tabla, columna, valor.ToString());
 }
 public virtual Valor Concat(Valor valor)
 {
     return new Caracter(Dato.ToString() + valor.ToString());
 }
 private void AgregarTransaccional(Valor valorTrama, ICollection<string> listaTransaccionales, StringBuilder transaccionales)
 {
     listaTransaccionales.Add(valorTrama.ToString());
     transaccionales.Append(valorTrama.ToString());
     transaccionales.Append(",");
 }