Advertisement
ringokin

main ajeitada 2

Dec 3rd, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.79 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <fstream>
  5. #include <locale.h>
  6. #include "CifraDeCesar.h"
  7. #include "criptografia.h"
  8. #include "Polialfabetica.h"
  9. #include "CifraDeUsoUnico.h"
  10. #include "CifraDeTransposicaoDeColunas.h"
  11. #include "enigma.h"
  12.  
  13. using namespace std;
  14.  
  15. int main()
  16. {
  17. ofstream arquivoS;
  18. ifstream arquivoE;
  19.  
  20. CifraDeCesar c(0, "", "", "");
  21. Polialfabetica p("", "", "");
  22. CifraDeUsoUnico u("", "", "");
  23. CifraDeTransposicaoDeColunas t("", "", "");
  24. enigma e("","","",0);
  25. int i=1,k =0, j=0, menu=0;
  26. char c1,c2;
  27. string s;
  28. setlocale(LC_ALL,"");
  29.  
  30. while(i)
  31. {
  32. system("cls");
  33. cout<<"Programa de Criptografia, Digite:"<<endl<<"1: para usar a cifra de César"<<endl<<"2: para usar a cifra polialfabética"<<endl<<"3: para usar a cifra de uso único"<<endl<<"4: para usar a cifra de transposição de colunas"<<endl<<"5: para usar a máquina enigma"<<endl<<"6: para acessar o histórico:"<<endl<<"0: para sair"<<endl;
  34. cin>>menu;
  35. if(menu==1)
  36. {
  37. system("cls");
  38. arquivoS.open("cezar.txt", ios::app);
  39. if(arquivoS.is_open())
  40. {
  41. cout<<"Cifra de césar:"<<endl<<"Digite 1 para encriptar:"<<endl<<"Digite 2 para decriptar:"<<endl;
  42. cin>>i;
  43. if(i==1)
  44. {
  45. system("cls");
  46. cout<<endl<<"Digite a frase que será encriptada: (letras maiúsculas e minúsculas)"<<endl;
  47. cin>>s;
  48. c.setEntrada(s);
  49. cout<<"Digite o quanto quer deslocar os caracteres: (número inteiro de tamanho infinito)"<<endl;
  50. cin>>i;
  51. c.setdesloca(i);
  52. c.encripta();
  53. arquivoS<<"criptografia: "<<" Entrada:"<<c.getEntrada()<<" Deslocamento:"<<c.getdesloca()<<" Saida:"<<c.getSaida()<<endl;
  54. arquivoS.close();
  55. cout<<endl<<"A mensagem encriptada é: "<<c.getSaida();
  56. }
  57. if(i==2)
  58. {
  59. system("cls");
  60. cout<<endl<<"Digite a frase encriptada: (letras maiúsculas e minúsculas)"<<endl;
  61. cin>>s;
  62. c.setSaida(s);
  63. cout<<"Digite o quanto os caracteres foram deslocados: (número inteiro de tamanho infinito)"<<endl;
  64. cin>>i;
  65. c.setdesloca(i);
  66. c.desencripta();
  67. arquivoS<<"decriptografia: "<<"Entrada:"<<c.getSaida()<<" Deslocamento:"<<c.getdesloca()<<" Saida:"<<c.getEntrada()<<endl;
  68. arquivoS.close();
  69. cout<<endl<<"A mensagem decriptada é:"<<c.getEntrada();
  70. }
  71. }
  72. else
  73. {
  74. system("cls");
  75. cout<<"Não foi possível abrir o arquivo";
  76. }
  77.  
  78. }
  79. if(menu==2)
  80. {
  81. system("cls");
  82. arquivoS.open("poli.txt", ios::app);
  83. if(arquivoS.is_open())
  84. {
  85. cout<<"Cifra polialfabética"<<endl<<"Digite 1 para encriptar:"<<endl<<"Digite 2 para decriptar:"<<endl;
  86. cin>>i;
  87. if(i==1)
  88. {
  89. system("cls");
  90. cout<<"Digite frase que seré encriptada: (letras maiúsculas e minúsculas)"<<endl;
  91. cin>>s;
  92. p.setEntrada(s);
  93. cout<<endl<<"Digite a palavra chave: (uma palavra de qualquer tamanho contendo apenas letras minúsculas)"<<endl;
  94. cin>>s;
  95. p.setChave(s);
  96. p.encripta();
  97. arquivoS<<"criptografia: "<<"Entrada:"<<p.getEntrada()<<" Chave:"<<p.getChave()<<" Saida:"<<p.getSaida()<<endl;
  98. arquivoS.close();
  99. cout<<endl<<"A mensagem encriptada é:"<<p.getSaida();
  100. }
  101.  
  102. if(i==2)
  103. {
  104. system("cls");
  105. cout<<"Digite a frase que será decriptada: (letras maiúsculas e minúsculas)"<<endl;
  106. cin>>s;
  107. p.setSaida(s);
  108. cout<<endl<<"Digite a palavra chave: (uma palavra de qualquer tamanho contendo apenas letras minúsculas)"<<endl;
  109. cin>>s;
  110. p.setChave(s);
  111. p.desencripta();
  112. cout<<endl<<"A mensagem decriptada é:"<<p.getEntrada();
  113. arquivoS<<"descriptografia: "<<"Entrada:"<<p.getSaida()<<" Chave:"<<p.getChave()<<" Saida:"<<p.getEntrada()<<endl;
  114. arquivoS.close();
  115. }
  116. }
  117. else
  118. {
  119. system("cls");
  120. cout<<"Não foi possivel abrir o arquivo";
  121. }
  122.  
  123. }
  124. if(menu==3)
  125. {
  126. system("cls");
  127. arquivoS.open("unico.txt", ios::app);
  128. if(arquivoS.is_open())
  129. {
  130. cout<<"Cifra de uso único:"<<endl<<"Digite 1 para encriptar:"<<endl<<"Digite 2 para decriptar:"<<endl;
  131. cin>>i;
  132. if(i==1)
  133. {
  134. system("cls");
  135. cout<<endl<<"Digite a frase que será encriptada: (letras maiúsculas e minúsculas)"<<endl;
  136. cin>>s;
  137. u.setEntrada(s);
  138. cout<<"Gerando chave aleatória:";
  139. u.tamanhoChaveEntrada();
  140. u.geraChave();
  141. for(i=0; i<u.getEntrada().size(); i++)
  142. {
  143. cout<<" "<<u.getChaves(i);
  144. }
  145. u.encripta();
  146. arquivoS<<"criptografia: "<<"Entrada:"<<u.getEntrada()<<" Chave:";
  147. for(i=0; i<u.getEntrada().size(); i++)
  148. {
  149. arquivoS<<" "<<u.getChaves(i);
  150. }
  151. arquivoS<<" Saida:"<<u.getSaida()<<endl;
  152. arquivoS.close();
  153. cout<<endl<<endl<<"A mensagem encriptada é:"<<u.getSaida();
  154. }
  155. if(i==2)
  156. {
  157. system("cls");
  158. cout<<endl<<"Digite a frase encriptada: (letras maiúsculas e minúsculas)"<<endl;
  159. cin>>s;
  160. u.setSaida(s);
  161. u.tamanhoChaveSaida();
  162. cout<<endl<<"Digite as chaves:"<<endl;
  163. for(i=0; i<u.getSaida().size(); i++)
  164. {
  165. cout<<i +1<<"º"<<" chave:";
  166. cin>>k;
  167. u.setChaves(i,k);
  168. }
  169. u.descriptografa();
  170. arquivoS<<"descriptografia: "<<"Entrada:"<<u.getSaida()<<" Chave:";
  171. for(i=0; i<u.getSaida().size(); i++)
  172. {
  173. arquivoS<<" "<<u.getChaves(i);
  174. }
  175. arquivoS<<" Saida:"<<u.getEntrada()<<endl;
  176. arquivoS.close();
  177. cout<<endl<<endl<<"A frase decriptada é:"<<u.getEntrada();
  178. }
  179. }
  180. else
  181. {
  182. system("cls");
  183. cout<<"Não foi possivel abrir o arquivo";
  184. }
  185. }
  186. if(menu==4)
  187. {
  188.  
  189. system("cls");
  190. arquivoS.open("coluna.txt", ios::app);
  191. if(arquivoS.is_open())
  192. {
  193. cout<<"Cifra de transposição de colunas:"<<endl<<"Digite 1 para encriptar:"<<endl<<"Digite 2 para decriptar:"<<endl;
  194. cin>>i;
  195. if(i==1)
  196. {
  197. try{
  198. system("cls");
  199. cout<<endl<<"Digite a palavra chave: (Palavra de qualquer tamanho sem caracteres repetidos)"<<endl;
  200. cin>>s;
  201. t.setChave(s);
  202. cout<<"Digite a frase que será encriptada: (Texto qualquer sem espaços)"<<endl;
  203. cin>>s;
  204. t.setEntrada(s);
  205. t.encripta();
  206. arquivoS<<"criptografia: "<<"Entrada:"<<t.getEntrada()<<" Chave:"<<t.getChave()<<" Saida:"<<t.getSaida()<<endl;
  207. arquivoS.close();
  208. cout<<endl<<"A mensagem encriptada é:"<<t.getSaida();
  209. }
  210. catch(DivideByZeroException &divideByZeroException){
  211. cout<<"A chave deve ter, no mínimo, um caractere."<<endl;
  212. }
  213.  
  214. }
  215.  
  216. if(i==2)
  217. {
  218. try{
  219. system("cls");
  220. cout<<endl<<"Digite a palavra chave:";
  221. cin>>s;
  222. t.setChave(s);
  223. cout<<"Digite a mensagem que será decriptada:";
  224. cin>>s;
  225. t.setEntrada(s);
  226. t.descriptografa();
  227. arquivoS<<"descriptografia: "<<"Entrada:"<<t.getEntrada()<<" Chave:"<<t.getChave()<<" Saida:"<<t.getSaida()<<endl;
  228. arquivoS.close();
  229. cout<<endl<<"A mensagem decriptada é:"<<t.getSaida();
  230. }
  231. catch(DivideByZeroException &divideByZeroException){
  232. cout<<"A chave deve ter, no mínimo, um caractere"<<endl;
  233. }
  234.  
  235. }
  236. }
  237. else
  238. {
  239. system("cls");
  240. cout<<"Não foi possível abrir o arquivo.";
  241. }
  242. }
  243. if(menu==5)
  244. {
  245. system("cls");
  246. arquivoS.open("enigma.txt", ios::app);
  247. if(arquivoS.is_open())
  248. {
  249. cout<<"Máquina enigma"<<endl;
  250. cout<<endl<<"Defina quais rotores irá usar(3 números diferentes de 1 a 5)"<<endl;
  251. for(k=0;k<3;k++)
  252. {
  253. cout<<"rotor "<<k+1<<":";
  254. cin>>i;
  255. e.setescolha(k,i);
  256. }
  257.  
  258. cout<<endl<<"Defina os anéis dos rotores (3 números de 1 a 26)"<<endl;
  259. for(k=0;k<3;k++)
  260. {
  261. cout<<"anel "<<k+1<<":";
  262. cin>>i;
  263. e.setanel(k,i);
  264. }
  265.  
  266. cout<<endl<<"Defina a rotação dos rotores(3 números de 1 a 26)"<<endl;
  267. for(k=0;k<3;k++)
  268. {
  269. cout<<"rotação "<<k+1<<":";
  270. cin>>i;
  271. e.setrotacao(k,i);
  272. }
  273.  
  274. arquivoS<<"Rotores escolhidos: "<<e.getescolha(0)<<","<<e.getescolha(1)<<","<<e.getescolha(2);
  275. arquivoS<<" Posicão dos anéis: "<<e.getanel(0)<<","<<e.getanel(1)<<","<<e.getanel(2);
  276. arquivoS<<" Rotacão dos rotores: "<<e.getrotacao(0)<<","<<e.getrotacao(1)<<","<<e.getrotacao(2);
  277. cout<<endl<<"Digite a frase de entrada: (sem espacos)"<<endl;
  278. cin>>s;
  279. e.setEntrada(s);
  280. arquivoS<<" Letras trocadas: ";
  281. while(i)
  282. {
  283. cout<<endl<<"Digite 1 para conectar letras, 0 para continuar:";
  284. cin>>i;
  285. if(i==1)
  286. {
  287. cout<<"Digite a 1 letra:";
  288. cin>>c1;
  289. cout<<"Digite a 2 letra:";
  290. cin>>c2;
  291. e.trocaletras(c1,c2);
  292. arquivoS<<c1<<"&"<<c2<<" , ";
  293. }
  294.  
  295. }
  296. e.encripta();
  297. cout<<endl<<"A mensagem encriptada é: "<<e.getSaida();
  298. arquivoS<<" Entrada:"<<s<<" Saída:"<<e.getSaida()<<endl;
  299. arquivoS.close();
  300. }
  301. else
  302. {
  303. system("cls");
  304. cout<<"Não foi possível abrir o arquivo.";
  305. }
  306.  
  307. }
  308. if(menu==6)
  309. {
  310. system("cls");
  311. cout<<"Digite qual método quer acessar o historico:"<<endl<<"1:Cifra de César:"<<endl<<"2:Cifra polialfabética:"<<endl<<"3:Cifra de uso único:"<<endl<<"4:Cifra de transposição de colunas:"<<endl<<"5:Máquina enigma"<<endl;
  312. cin>>i;
  313. if(i==1)
  314. {
  315. system("cls");
  316. arquivoE.open("cezar.txt");
  317. if(arquivoE.is_open())
  318. {
  319. while(getline(arquivoE,s))
  320. cout<<s<<endl<<endl;
  321. arquivoE.close();
  322. }
  323. else
  324. {
  325. system("cls");
  326. cout<<"Não foi possível abrir o arquivo";
  327. }
  328. }
  329.  
  330. if(i==2)
  331. {
  332. arquivoE.open("poli.t");
  333. if(arquivoE.is_open())
  334. {
  335. while(getline(arquivoE,s))
  336. cout<<s<<endl<<endl;
  337. arquivoE.close();
  338. }
  339. else
  340. {
  341. system("cls");
  342. cout<<"Não foi possível abrir o arquivo";
  343. }
  344.  
  345. }
  346. if(i==3)
  347. {
  348. system("cls");
  349. arquivoE.open("unico.txt");
  350. if(arquivoE.is_open())
  351. {
  352. while(getline(arquivoE,s))
  353. cout<<s<<endl<<endl;
  354. arquivoE.close();
  355. }
  356. else
  357. {
  358. system("cls");
  359. cout<<"Não foi possível abrir o arquivo";
  360. }
  361.  
  362. }
  363. if(i==4)
  364. {
  365. system("cls");
  366. arquivoE.open("coluna.txt");
  367. if(arquivoE.is_open())
  368. {
  369. while(getline(arquivoE,s))
  370. cout<<s<<endl<<endl;
  371. arquivoE.close();
  372. }
  373. else
  374. {
  375. system("cls");
  376. cout<<"Não foi possível abrir o arquivo";
  377. }
  378.  
  379. }
  380. if(i==5)
  381. {
  382. system("cls");
  383. arquivoE.open("enigma.txt");
  384. if(arquivoE.is_open())
  385. {
  386. while(getline(arquivoE,s))
  387. cout<<s<<endl<<endl;
  388. arquivoE.close();
  389. }
  390. else
  391. {
  392. system("cls");
  393. cout<<"Não foi possível abrir o arquivo";
  394. }
  395. }
  396. }
  397. if (menu){
  398. cout<<endl<<"Digite 1 para continuar usando o programa ou 0 para sair";
  399. cin>>i;
  400. }
  401. else
  402. i = 0;
  403.  
  404. }
  405.  
  406. return 0;
  407. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement