Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int Criptografar(char chave[])
- {
- int tam_chave = strlen(chave); //Configuração da chave para criptografia
- char texto[100000]; //Vetor de entrada de texto a ser criptografado
- int texto_cript[100000]; //Vetor de encriptação
- int valor_chave, aux = 0, i; //Variáveis de controle de chave
- FILE *arquivo; //ponteiro do arquivo
- printf("nnDigite o texto a ser criptografado: n");
- scanf("n%[^n]s", texto); //Lê o que você digitar
- printf("nn"); //Separa pra não virar bagunça
- for(i = 0; i < strlen(texto); i++)
- {
- texto_cript[i]=texto[i]; //Atribui pro TEXTO_CRIPT o ASCII dos caracteres digitados
- }
- while(aux < strlen(texto)) //Vai de 0 até o tamanho do texto incrementando dentro do for
- {
- for(i = 0; i < tam_chave; i++)//Percorre a chave dinâmicamente ex.: "aBcd" 0123
- {
- valor_chave = chave[i]; //pega o ASCII da chave dinâmicamente ex.: "a" = 65
- texto_cript[aux] *= valor_chave; //multiplica o ASCII de TEXTO_CRIPT pelo ASCII de VALOR_CHAVE e atribui para TEXTO_CRIPT.
- //EX.: "a" 65 * 65 = 4225
- aux++; //incrementa o AUX
- }
- }
- arquivo = fopen("criptografado.txt", "w"); //Cria o arquivo pra escrita
- if (arquivo==NULL)
- {
- printf("nnErro ao criar o arquivo.....nnn");
- }
- else
- {
- for (i = 0; i < strlen(texto); i++)//percorre o texto digitado pelo usuário
- {
- fprintf(arquivo, "%d", texto_cript[i]); //grava em arquivo o texto já encriptado
- }
- }
- fclose(arquivo); //fecha o arquivo
- }
- int Descriptografar(char chave[])
- {
- int tam_chave = strlen(chave); //Configuração da chave para criptografia
- int texto_decript[100000]; //Vetor de descriptação
- int valor, pos_chave = 0, pos_texto = 0, i; //Variáveis de controle de chave
- FILE *arquivo;
- arquivo = fopen("criptografado.txt", "r"); //Abre o arquivo para leitura
- if (arquivo==NULL)
- {
- printf("nnErro ao criar o arquivo.....nnn");
- }
- else
- {
- while(!feof(arquivo)) //Percorre o arquivo criptografado até o final
- {
- fscanf(arquivo,"%d", &valor); //Lê os valores criptografados em ASCII
- valor /= chave[pos_chave]; //Divide o valor pelo ASCII da posição ASCII da chave
- texto_decript[pos_texto] = (char)valor; //TEXTO_DECRIPT recebe o typecasting de valor, ex.: 65 = "a"
- pos_texto++; //incrementa a posição do vetor TEXTO_DECRIPT
- if (pos_chave == tam_chave-1) //Percorre a chave e retorna na posição inicial
- {
- pos_chave = 0;
- }
- else
- {
- pos_chave++; //Senão, incrementa a chave
- }
- }
- }
- fclose(arquivo); //Fecha o aarquivo com o texto criptografado
- arquivo = fopen("descriptografado.txt", "w"); //Cria um novo arquivo para escrita
- fprintf(arquivo, "%s", texto_decript); //Grava em arquivo o texto já decriptado
- printf("nnO arquivo foi descriptado com sucesso!nnn"); //Frescura minha pra dizer que terminou a função
- }
- int main(void)
- {
- int opcao = 0;
- do
- {
- //MENU
- printf("nSelecione uma opcao:n 1 - Criptografar texto digitado.n 2 - Descriptografar texto.n 3 - Sair.n");
- scanf("%d", &opcao);
- switch(opcao)
- {
- case 1:
- Criptografar("AbCd"); //Ativa a função passando como parâmetro a chave desejada
- break;
- case 2:
- Descriptografar("AbCd"); //Faz a mesma coisa que eu comentei acima
- break;
- case 3:
- continue;
- break;
- default:
- printf("nOpcao invalida! Tente Novamente.nn");
- }
- }while(opcao != 3);
- return 0;
- }
Add Comment
Please, Sign In to add comment