//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); }
//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(); }