Guest User

Untitled

a guest
Jun 24th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.00 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int Criptografar(char chave[])
  6. {
  7. int tam_chave = strlen(chave); //Configuração da chave para criptografia
  8. char texto[100000]; //Vetor de entrada de texto a ser criptografado
  9. int texto_cript[100000]; //Vetor de encriptação
  10. int valor_chave, aux = 0, i; //Variáveis de controle de chave
  11.  
  12. FILE *arquivo; //ponteiro do arquivo
  13.  
  14. printf("nnDigite o texto a ser criptografado: n");
  15. scanf("n%[^n]s", texto); //Lê o que você digitar
  16. printf("nn"); //Separa pra não virar bagunça
  17.  
  18. for(i = 0; i < strlen(texto); i++)
  19. {
  20. texto_cript[i]=texto[i]; //Atribui pro TEXTO_CRIPT o ASCII dos caracteres digitados
  21. }
  22. while(aux < strlen(texto)) //Vai de 0 até o tamanho do texto incrementando dentro do for
  23. {
  24. for(i = 0; i < tam_chave; i++)//Percorre a chave dinâmicamente ex.: "aBcd" 0123
  25. {
  26. valor_chave = chave[i]; //pega o ASCII da chave dinâmicamente ex.: "a" = 65
  27. texto_cript[aux] *= valor_chave; //multiplica o ASCII de TEXTO_CRIPT pelo ASCII de VALOR_CHAVE e atribui para TEXTO_CRIPT.
  28. //EX.: "a" 65 * 65 = 4225
  29. aux++; //incrementa o AUX
  30. }
  31. }
  32.  
  33. arquivo = fopen("criptografado.txt", "w"); //Cria o arquivo pra escrita
  34. if (arquivo==NULL)
  35. {
  36. printf("nnErro ao criar o arquivo.....nnn");
  37. }
  38. else
  39. {
  40. for (i = 0; i < strlen(texto); i++)//percorre o texto digitado pelo usuário
  41. {
  42. fprintf(arquivo, "%d", texto_cript[i]); //grava em arquivo o texto já encriptado
  43. }
  44. }
  45. fclose(arquivo); //fecha o arquivo
  46. }
  47.  
  48. int Descriptografar(char chave[])
  49. {
  50. int tam_chave = strlen(chave); //Configuração da chave para criptografia
  51. int texto_decript[100000]; //Vetor de descriptação
  52. int valor, pos_chave = 0, pos_texto = 0, i; //Variáveis de controle de chave
  53.  
  54. FILE *arquivo;
  55.  
  56. arquivo = fopen("criptografado.txt", "r"); //Abre o arquivo para leitura
  57. if (arquivo==NULL)
  58. {
  59. printf("nnErro ao criar o arquivo.....nnn");
  60. }
  61. else
  62. {
  63. while(!feof(arquivo)) //Percorre o arquivo criptografado até o final
  64. {
  65. fscanf(arquivo,"%d", &valor); //Lê os valores criptografados em ASCII
  66. valor /= chave[pos_chave]; //Divide o valor pelo ASCII da posição ASCII da chave
  67. texto_decript[pos_texto] = (char)valor; //TEXTO_DECRIPT recebe o typecasting de valor, ex.: 65 = "a"
  68. pos_texto++; //incrementa a posição do vetor TEXTO_DECRIPT
  69.  
  70. if (pos_chave == tam_chave-1) //Percorre a chave e retorna na posição inicial
  71. {
  72. pos_chave = 0;
  73. }
  74. else
  75. {
  76. pos_chave++; //Senão, incrementa a chave
  77. }
  78. }
  79. }
  80. fclose(arquivo); //Fecha o aarquivo com o texto criptografado
  81.  
  82. arquivo = fopen("descriptografado.txt", "w"); //Cria um novo arquivo para escrita
  83. fprintf(arquivo, "%s", texto_decript); //Grava em arquivo o texto já decriptado
  84. printf("nnO arquivo foi descriptado com sucesso!nnn"); //Frescura minha pra dizer que terminou a função
  85. }
  86.  
  87. int main(void)
  88. {
  89. int opcao = 0;
  90. do
  91. {
  92. //MENU
  93. printf("nSelecione uma opcao:n 1 - Criptografar texto digitado.n 2 - Descriptografar texto.n 3 - Sair.n");
  94. scanf("%d", &opcao);
  95. switch(opcao)
  96. {
  97. case 1:
  98. Criptografar("AbCd"); //Ativa a função passando como parâmetro a chave desejada
  99. break;
  100. case 2:
  101. Descriptografar("AbCd"); //Faz a mesma coisa que eu comentei acima
  102. break;
  103. case 3:
  104. continue;
  105. break;
  106. default:
  107. printf("nOpcao invalida! Tente Novamente.nn");
  108. }
  109. }while(opcao != 3);
  110. return 0;
  111. }
Add Comment
Please, Sign In to add comment