Exemple #1
0
        //Desencripta los archivos seleccionados del panel de control derecho en la carpeta de descarga seleccionada
        private void btn_decrypt_Click(object sender, EventArgs e)
        {
            //GongSolutions.Shell.ShellItem[] elementos = Vista_carpeta.SelectedItems;
            //foreach(GongSolutions.Shell.ShellItem elemento in elementos)
            //{
            //String rutaElemento = elemento.FileSystemPath;
            foreach (String rutaElemento in rutas)
            {
                String nombreElemento = System.IO.Path.GetFileName(rutaElemento);
                String PassBD         = buscarArchivoBD(nombreElemento);
                String nombre         = System.IO.Path.GetFileNameWithoutExtension(rutaElemento);
                String ruta           = System.IO.Path.GetDirectoryName(rutaElemento);
                String ficheroDestino = System.IO.Path.Combine(_dir_descarga, nombre);
                String error          = "";
                if (PassBD == "")
                {
                    error += "El archivo " + nombreElemento + " no está cifrado\n";
                }
                else
                {
                    Byte[] PassMaestra   = Cifrado.GenerarClaveByte(_password, 32);
                    String PassArchivo   = Cifrado.DescifrarPassArchivoAES(PassBD, PassMaestra);
                    Byte[] ContAleatoria = Cifrado.GenerarClaveByte(PassArchivo, 16);
                    //Comprueba si la extensión del archivo es AES o RC4
                    switch (System.IO.Path.GetExtension(rutaElemento))
                    {
                    case ".aes":     //Caso de que sea aes
                        //Desciframos el archivo e AES
                        Cifrado.DescifrarAES(rutaElemento, ficheroDestino, ContAleatoria);
                        break;

                    case ".rc4":     //Caso de que sea RC4
                        //Desciframos el archivo en RC4
                        Cifrado.RC4(rutaElemento, ficheroDestino, PassArchivo);

                        break;

                    default:
                        return;
                    }
                }

                if (error != "")
                {
                    MessageBox.Show(error, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    MessageBox.Show("Todos los archivos se han descifrado con éxito", "Correcto", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            listaArchivos.Clear();
            rutas.Clear();
            Process.Start("explorer.exe", _dir_descarga);
        }
Exemple #2
0
        //Botón que cifra los archivos seleccionados
        private void btn_crypt_Click(object sender, EventArgs e)
        {
            //Comprueba el método de cifrado que se ha de emplear
            //En caso de no haberse seleccionado ninguno mostrará un mensaje de aviso
            String cifrado = "";

            if ((string)lista_cifrado.SelectedItem == "AES")
            {
                cifrado = ".aes";
            }
            else if ((string)lista_cifrado.SelectedItem == "RC4")
            {
                cifrado = ".rc4";
            }
            else
            {
                MessageBox.Show("Debe introducir un método de cifrado", "Atención", MessageBoxButtons.OK);
                return;
            }

            String error = "";

            foreach (String direccion in rutas)
            {
                String fileExtension = System.IO.Path.GetExtension(direccion);
                String fileName      = System.IO.Path.GetFileName(direccion) + cifrado;
                //Comprobar si el archivo ya existe en la BD
                if (fileExtension == ".aes" || fileExtension == ".rc4")
                {
                    error += "El archivo " + fileName + " ya está cifrado\n";
                }
                else if (buscarArchivoBD(fileName) != "")
                {
                    error += "El archivo " + fileName + " ya ha sido cifrado\n";
                }
                else
                {
                    String ContAleatoria = Cifrado.CrearClaveAleatoria(16);
                    Byte[] PassMaestra   = Cifrado.GenerarClaveByte(_password, 32);
                    String PassArchivo   = Cifrado.CifrarPassArchivoAES(ContAleatoria, PassMaestra);
                    if (cifrado == ".aes")
                    {
                        //Generamos las claves necesarias para el cifrado en AES
                        //Se llama a la función que cifra por AES
                        if (Cifrado.CifrarAES(direccion, ContAleatoria))
                        {
                            InsertarArchivoBD(fileName, PassArchivo);
                            CopiaArchivo(direccion + cifrado, fileName);
                        }
                    }
                    else
                    {
                        //Se llama a la función que cifra por RC4
                        if (Cifrado.RC4(direccion, direccion + cifrado, ContAleatoria))
                        {
                            InsertarArchivoBD(fileName, PassArchivo);
                            CopiaArchivo(direccion + cifrado, fileName);
                        }
                    }
                }
            }
            if (error != "")
            {
                MessageBox.Show(error, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                MessageBox.Show("Todos los archivos se han cifrado con éxito", "Correcto", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            listaArchivos.Clear();
            rutas.Clear();
        }