· 4 years ago · Mar 16, 2021, 08:46 PM
1package Ejercicio2;
2
3import java.io.File;
4import java.io.FileInputStream;
5import java.io.FileOutputStream;
6import java.io.IOException;
7import java.io.InputStream;
8import java.io.OutputStream;
9import java.nio.file.Files;
10import java.nio.file.Paths;
11import java.util.Scanner;
12
13import javax.crypto.Cipher;
14import javax.crypto.CipherInputStream;
15import javax.crypto.CipherOutputStream;
16import javax.crypto.KeyGenerator;
17import javax.crypto.SecretKey;
18
19public class Ejercicio2 {
20
21 private static Cipher ecipher;
22 private static Cipher dcipher;
23 private static SecretKey key;
24
25 public static void main(String[] args) {
26 // TODO Auto-generated method stub
27
28 String clearTextFile = "./files/archivo.txt";
29 String cipherTextFile = "./files/cipher.txt";
30 String clearTextNewFile = "./files/source-new.txt";
31
32 try {
33 key = KeyGenerator.getInstance("DES").generateKey();
34
35 ecipher = Cipher.getInstance("DES");
36 dcipher = Cipher.getInstance("DES");
37
38 String option = "";
39
40 Scanner sc = new Scanner(System.in);
41
42 while (!option.equals("3")) {
43
44 showMenu();
45
46 option = sc.nextLine();
47
48 switch (option) {
49 case "1":
50 System.out.println("Introduzca un fichero a encriptar:");
51 clearTextFile = sc.nextLine();
52 while(!new File(clearTextFile).exists()) {
53 System.out.println("No existe un archivo con ese nombre, por favor, introduzca uno válido:");
54 clearTextFile = sc.nextLine();
55 }
56 ecipher.init(Cipher.ENCRYPT_MODE, key);
57 byte[] lectura = Files.readAllBytes(Paths.get(clearTextFile));
58 System.out.println("El mensaje que vamos a encriptar es: " + new String(lectura));
59 byte[] encriptado = ecipher.doFinal(lectura);
60 System.out.println("Mensaje encriptado: " + new String(encriptado));
61
62 System.out.println("En qué fichero quieres guardar el mensaje:");
63 cipherTextFile = sc.nextLine();
64 File fcipher = new File(cipherTextFile);
65 FileOutputStream escritor = new FileOutputStream(fcipher, true);
66 escritor.write(encriptado);
67 escritor.close();
68 //encrypt(new FileInputStream(clearTextFile), new FileOutputStream(cipherTextFile));
69 System.out.println("Fichero encriptado correctamente");
70 break;
71 case "2":
72
73 dcipher.init(Cipher.DECRYPT_MODE, key);
74 //decrypt(new FileInputStream(cipherTextFile), new FileOutputStream(clearTextNewFile));
75 byte[] lecturados = Files.readAllBytes(Paths.get(cipherTextFile));
76 System.out.println("El mensaje que vamos a desencriptar es: " + new String(lecturados));
77 byte[] desencriptado = dcipher.doFinal(lecturados);
78 System.out.println("Mensaje encriptado: " + new String(desencriptado));
79
80 System.out.println("En qué fichero quieres guardar el mensaje:");
81 String direccionCrypt = sc.nextLine();
82 File dcipher = new File(direccionCrypt);
83 FileOutputStream escritordes = new FileOutputStream(dcipher, true);
84 escritordes.write(desencriptado);
85 escritordes.close();
86 //encrypt(new FileInputStream(clearTextFile), new FileOutputStream(cipherTextFile));
87 System.out.println("Fichero encriptado correctamente");
88 System.out.println("Fichero desencriptado correctamente y guardado");
89 break;
90 case "3":
91 System.out.println("Gracias por encriptar con nosotros");
92 break;
93
94 default:
95 System.out.println("Opción errónea");
96
97 }
98 }
99
100 } catch (Exception e) {
101 e.printStackTrace();
102 }
103
104 }
105
106 private static void showMenu() {
107 System.out.println("ENCIFRADOR DES");
108 System.out.println("1 - Cifrar archivo");
109 System.out.println("2 - Descifrar archivo cifrado");
110 System.out.println("3 - Salir");
111 }
112
113}
114