Ejemplo n.º 1
0
        /// <summary>
        /// Metodo que se manda a ejecutar desde otras clases para encriptar o desencriptar cadenas
        /// </summary>
        /// <param name="pstrText">Frase a encriptar o desencriptar</param>
        /// <param name="penmTransformType">Enumeracion para indicar si se encripta o decripta</param>
        /// <returns></returns>
        public string Transmute(string pstrText, enmTransformType penmTransformType)
        {
            string str = string.Empty;

            try
            {
                str = this.Transform(pstrText.Trim(), this.PassPhrase, this.SaltValue, this.HashAlgorithm, this.PassIterations, this.InitVector, this.KeySize, penmTransformType);
            }
            catch (Exception exception)
            {
                throw exception;
            }
            return(str);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Metodo que encripta una cadena usando un algoritmo propio de TV Azteca
        /// </summary>
        /// <param name="pstrText">Palabra a encriptar</param>
        /// <param name="pstrPassPhrase">Palabra clave para encriptar</param>
        /// <param name="pstrSaltValue">Palabra clave para la llave de seguridad</param>
        /// <param name="pstrHashAlgorithm">Algoritmo de encriptamiento</param>
        /// <param name="pintPassIterations">Numero de iteraciones que tiene que hacer el encriptado</param>
        /// <param name="pstrInitVector">Nombre Clave para desencriptar</param>
        /// <param name="pintKeySize">Tamaño de la clave</param>
        /// <param name="penmTransformType">Indicador para encriptar o desencriptar</param>
        /// <returns>Retorna frase encriptada o desencriptada</returns>
        private string Transform(string pstrText, string pstrPassPhrase, string pstrSaltValue, string pstrHashAlgorithm, int pintPassIterations, string pstrInitVector, int pintKeySize, enmTransformType penmTransformType = 0)
        {
            byte[] rgbIV = null;
            rgbIV = Encoding.ASCII.GetBytes(pstrInitVector);
            byte[] rgbSalt = null;
            rgbSalt = Encoding.ASCII.GetBytes(pstrSaltValue);
            byte[] buffer = null;
            if (penmTransformType == enmTransformType.intEncrypt)
            {
                buffer = Encoding.UTF8.GetBytes(pstrText);
            }
            else
            {
                buffer = Convert.FromBase64String(pstrText);
            }
            PasswordDeriveBytes bytes = new PasswordDeriveBytes(pstrPassPhrase, rgbSalt, pstrHashAlgorithm, pintPassIterations);

            byte[] rgbKey = null;
            rgbKey = bytes.GetBytes(pintKeySize / 8);
            RijndaelManaged managed = new RijndaelManaged
            {
                Mode = CipherMode.CBC
            };
            ICryptoTransform transform = null;

            if (penmTransformType == enmTransformType.intEncrypt)
            {
                transform = managed.CreateEncryptor(rgbKey, rgbIV);
            }
            else
            {
                transform = managed.CreateDecryptor(rgbKey, rgbIV);
            }
            MemoryStream stream  = null;
            CryptoStream stream2 = null;
            string       str     = null;

            if (penmTransformType == enmTransformType.intEncrypt)
            {
                stream  = new MemoryStream();
                stream2 = new CryptoStream(stream, transform, CryptoStreamMode.Write);
                stream2.Write(buffer, 0, buffer.Length);
                stream2.FlushFinalBlock();
                str = Convert.ToBase64String(stream.ToArray());
            }
            else
            {
                stream  = new MemoryStream(buffer);
                stream2 = new CryptoStream(stream, transform, CryptoStreamMode.Read);
                byte[] buffer6 = null;
                buffer6 = new byte[buffer.Length + 1];
                int count = 0;
                count = stream2.Read(buffer6, 0, buffer6.Length);
                str   = Encoding.UTF8.GetString(buffer6, 0, count);
            }
            stream.Close();
            stream2.Close();
            return(str);
        }