Ejemplo n.º 1
0
        /// <summary>
        /// Genera _bytEncriptado: Es unByte[] con el contenido de llavePublica RSA encriptada (bytes) y contenido Encriptado Simetrico
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAsimEncriptar_Click(object sender, EventArgs e)
        {
            byte[] _bytEncriptado = null;
            System.Security.Cryptography.CspParameters csp = new CspParameters();
            csp.KeyContainerName = "pepe";
            //Creamos una instancia del encritador publico
            RSACryptoServiceProvider _objEncriptadorPublicoRSA = new RSACryptoServiceProvider(csp);

            //Le asignamos la llave genarada
            _objEncriptadorPublicoRSA.FromXmlString(this.txtAsimLlavePublica.Text);

            if (this.chkSimetrica.Checked)
            {
                //Se declara la memoria para almacenar la llave utilizada por nuestro Rijndael personalizado
                byte[] _bytKey = (Rijndael.Create()).Key;

                //Se encripta el texto y se obtiene la llave que se utilizó para la encriptación
                byte[] _contenidoEncriptadoSimetrico = MiRijndael.Encriptar(this.txtAsimAEncriptar.Text, _bytKey);

                //Se encripta la llave con el algoritmo RSA
                byte[] llaveEncriptadaRSA = _objEncriptadorPublicoRSA.Encrypt(_bytKey, false);

                #region Se copia en un vector la llave encriptada y el contenido encriptado Simetrico (Rijndael)
                _bytEncriptado = new byte[llaveEncriptadaRSA.Length + _contenidoEncriptadoSimetrico.Length];
                llaveEncriptadaRSA.CopyTo(_bytEncriptado, 0);
                _contenidoEncriptadoSimetrico.CopyTo(_bytEncriptado, llaveEncriptadaRSA.Length);
                #endregion
            }
            else
            {
                _bytEncriptado = _objEncriptadorPublicoRSA.Encrypt(System.Text.Encoding.UTF8.GetBytes(this.txtAsimAEncriptar.Text), false);
            }
            this.txtAsimEncriptado.Text = Convert.ToBase64String(_bytEncriptado);
        }
Ejemplo n.º 2
0
        public string DesEncriptar(byte[] bytEncriptado, bool blnConSimetrico)
        {
            if (blnConSimetrico)
            {
                //Array que continen la clave simetrica encriptada
                byte[] keyArray = new byte[objRSA.KeySize / 8];
                //Array que continen la encriptacion simetrica del contenido
                byte[] encrypted = new byte[bytEncriptado.Length - keyArray.Length];

                //Copia la clave asimetrica
                Array.Copy(bytEncriptado, 0, keyArray, 0, keyArray.Length);
                //Copia  de contenido simetrico
                Array.Copy(bytEncriptado, keyArray.Length, encrypted, 0, encrypted.Length);

                //Obtinen la clave Simetrica desencripptada que utilizara el Algoritmo simetrico
                byte[] simKey = this.objRSA.Decrypt(keyArray, false);

                return(MiRijndael.Desencriptar(encrypted, simKey));
            }
            else
            {
                return(System.Text.Encoding.UTF8.GetString(this.objRSA.Decrypt(bytEncriptado, false)));
            }
        }