示例#1
0
        /// <summary>
        /// Clase de encriptación
        /// </summary>
        /// <param name="password">Texto que se usará para generar el algoritmo de cifrado</param>
        /// <param name="valorRGBSalt">una cadena de texto cualquiera</param>
        /// <param name="iteraciones">número de iteraciones</param>
        /// <param name="vectorInicial">Un texto o número de 16 bytes (16 caracteres)</param>
        /// <param name="keyLength">Tamaño clave: puede ser 128, 192 o 256</param>
        public AESHelper(string password, string valorRGBSalt, int iteraciones, string vectorInicial, EKeyLength keyLength)
        {
            if (vectorInicial == null) vectorInicial = "";
            if (vectorInicial.Length != 16)
            {
                if (vectorInicial.Length < 16) vectorInicial = vectorInicial.PadLeft(16, '0');
                else vectorInicial = vectorInicial.Substring(0, 16);
            }

            byte[] InitialVectorBytes = Encoding.ASCII.GetBytes(vectorInicial);
            byte[] saltValueBytes = Encoding.ASCII.GetBytes(valorRGBSalt);

            PasswordDeriveBytes pd = new PasswordDeriveBytes(password, saltValueBytes, "SHA1"  // Algoritmo de cifrado: puede ser MD5 ó SHA1
                , iteraciones);
            byte[] keyBytes = pd.GetBytes((int)keyLength / 8);

            encryptor = symmetricKey.CreateEncryptor(keyBytes, InitialVectorBytes);
            decryptor = symmetricKey.CreateDecryptor(keyBytes, InitialVectorBytes);
        }
示例#2
0
        /// <summary>
        /// Clase de encriptación
        /// </summary>
        /// <param name="password">Texto que se usará para generar el algoritmo de cifrado</param>
        /// <param name="valorRGBSalt">una cadena de texto cualquiera</param>
        /// <param name="iteraciones">número de iteraciones</param>
        /// <param name="vectorInicial">Un texto o número de 16 bytes (16 caracteres)</param>
        /// <param name="keyLength">Tamaño clave: puede ser 128, 192 o 256</param>
        public AESHelper(string password, string valorRGBSalt, int iteraciones, string vectorInicial, EKeyLength keyLength)
        {
            if (vectorInicial == null)
            {
                vectorInicial = "";
            }
            if (vectorInicial.Length != 16)
            {
                if (vectorInicial.Length < 16)
                {
                    vectorInicial = vectorInicial.PadLeft(16, '0');
                }
                else
                {
                    vectorInicial = vectorInicial.Substring(0, 16);
                }
            }

            byte[] InitialVectorBytes = Encoding.ASCII.GetBytes(vectorInicial);
            byte[] saltValueBytes     = Encoding.ASCII.GetBytes(valorRGBSalt);

            PasswordDeriveBytes pd = new PasswordDeriveBytes(password, saltValueBytes, "SHA1"  // Algoritmo de cifrado: puede ser MD5 ó SHA1
                                                             , iteraciones);

            byte[] keyBytes = pd.GetBytes((int)keyLength / 8);

            encryptor = symmetricKey.CreateEncryptor(keyBytes, InitialVectorBytes);
            decryptor = symmetricKey.CreateDecryptor(keyBytes, InitialVectorBytes);
        }