-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.java
More file actions
126 lines (104 loc) · 3.8 KB
/
Program.java
File metadata and controls
126 lines (104 loc) · 3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import security.CesarCipher;
import security.Log;
import security.RSA;
public class Program {
private static CesarCipher cesarCipher = new CesarCipher();
private static RSA rsa = new RSA();
private static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
private static String lastEncryptedMessage = "";
public static void main(String[] args) {
try {
menuState();
} catch (Exception e) {
System.out.println("! Erro inesperado, programa será encerrado !");
}
}
private static void menuState() {
System.out.println("\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
System.out.println("MENU");
System.out.println("----");
System.out.println("Escolha uma das opções:\n");
System.out.println("1) " + (Log.getIsActive() ? "Desa" : "A") + "tivar logs");
System.out.println("2) Criptografar uma mensagem");
System.out.println("3) Decriptografar última mensagem");
System.out.println("4) Decriptografar uma mensagem");
System.out.println("0) Sair\n");
try {
String option = reader.readLine().trim();
switch (option) {
case "0":
System.out.println("Bye bye");
break;
case "1":
Log.setIsActive(!Log.getIsActive());
System.out.println("! Os logs foram " + (Log.getIsActive() ? "" : "des") + "ativados !");
menuState();
break;
case "2":
encryptState();
break;
case "3":
decryptLastState();
break;
case "4":
decryptState();
break;
default:
System.out.println("! Opção inválida !");
menuState();
break;
}
} catch (IOException e) {
System.out.println("! Entrada de dados inválida !");
menuState();
}
}
private static void encryptState() {
System.out.println("\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
System.out.println("Informe uma mensagem:");
try {
String message = reader.readLine().trim();
String cipheredMessage = cesarCipher.cipher(message);
lastEncryptedMessage = rsa.encrypt(cipheredMessage);
System.out.println("\n\nSua mensagem criptografada");
System.out.println(lastEncryptedMessage + "\n\n");
menuState();
} catch (IOException e) {
System.out.println("! Entrada de dados inválida !");
encryptState();
}
}
private static void decryptLastState() {
System.out.println("\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
if (lastEncryptedMessage.isBlank()) {
System.out.println("! Ainda foi foi feita uma criptografia !");
} else {
String decryptedMessage = rsa.decrypt(lastEncryptedMessage);
String decipheredMessage = cesarCipher.decipher(decryptedMessage);
System.out.println("\n\nSua mensagem decriptografada");
System.out.println(decipheredMessage + "\n\n");
}
menuState();
}
private static void decryptState() {
System.out.println("\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n");
System.out.println("Informe uma mensagem criptografada:");
try {
String encryptedMessage = reader.readLine().trim();
String decryptedMessage = rsa.decrypt(encryptedMessage);
String decipheredMessage = cesarCipher.decipher(decryptedMessage);
System.out.println("\n\nSua mensagem decriptografada");
System.out.println(decipheredMessage + "\n\n");
menuState();
} catch (IOException e) {
System.out.println("! Entrada de dados inválida !");
decryptState();
} catch (NumberFormatException e) {
System.out.println("! Mensagem criptografada deve conter apenas números !");
decryptState();
}
}
}