Criptografia de strings
#include "stdafx.h"
#include <string.h>
void leitura(char string[])
{
printf("Digite frase: "); gets(string);
}
bool criptografa(char string[], char senha[])
{
char cript[40]; int j, i, k; char chave = 'C';
if(string[0] == '╗') return false;
cript[0] = '╗'; // caracter 187 da ASCII
k = 1; for (i = 0; senha[i] != '\0'; i++) // criptografa a senha { cript[k] = senha[i] ^ chave; chave += 2; k++; }
cript[k] = '╗'; k++;
j = 0; for (i = 0; string[i] != '\0'; i++) // criptografa o string { cript[k] = string[i] ^ senha[j]; j++; if (senha[j] == '\0') j = 0; k++; }
cript[k] = '\0'; strcpy(string,cript); return true;
}
bool descriptografa(char string[], char senha[])
{
char cript[40]; int j, i, k; char chave = 'C';
if(string[0] != '╗') return false;
k = 0; for (i = 1; string[i] != '╗'; i++) // descriptografa a senha { cript[k] = string[i] ^ chave; chave += 2; k++; }
cript[k] = '\0';
if (strcmp(senha,cript) != 0) // senha nao confere return false;
i++;
j = 0; k = 0; for (; string[i] != '\0'; i++) // criptografa o string { cript[k] = string[i] ^ senha[j]; j++; if (senha[j] == '\0') j = 0; k++; }
cript[k] = '\0'; strcpy(string,cript); return true;
}
void main(){ char nome[40]; char senha[20];
char op; do{ puts("1 Digitar"); puts("2 Criptografa"); puts("3 Descriptografa"); puts("4 Mostra"); puts("5 Sair");
do{ printf("Digite opcao: "); op = getchar(); fflush(stdin); }while (op!='1' && op!='2' && op!='3' && op!='4'&& op!='5');
switch(op){ case '1': leitura(nome); break; case '2': printf("Digite sua Senha: "); gets(senha); if (!criptografa(nome, senha)) printf("Essa frase ja esta criptografada\n"); break; case '3': printf("Digite sua Senha: ");