[C] Criptografia por Inversão de bits
Publicado por Enzo de Brito Ferber 04/03/2006
[ Hits: 13.301 ]
Homepage: http://www.maximasonorizacao.com.br
Programa de criptografia simples que
usa o operador ~(complemento de 1).
O operador ~ faz o seguinte:
01000001 ~
10111110
Todos os bits 0 passam a ser 1, e
todos os 1 passam a ser 0. O
programa criptografa um arquivo
inteiro, não uma só palavra.
#include <stdio.h>
#include <stdlib.h>
char encode(char ch){
return(~ch);
}
int set(){
system("clear");
}
int abrirArquivo(char caminho[]){
FILE *arqEntrada;
FILE *arqSaida;
char *textoEntrada;
char *textoSaida;
char ch;
int i=2; //para poder ser usado para alocação dinamica
if((arqEntrada = fopen(caminho, "r")) == 0){
printf("Impossivel abrir o arquivo...\n");
printf("Pressione ENTER para continuar...\n");
__fpurge(stdin);
ch = getchar();
main();
exit(1);
}
if((arqSaida = fopen("texto_criptografado.txt", "w")) == 0){
printf("Impossivel abrir o arquivo...\n");
printf("Pressione ENTER para continuar...\n");
__fpurge(stdin);
ch = getchar();
main();
}
printf("Realizando criptografia...\n");
while(!feof(arqEntrada)){
if((textoEntrada = (char *)calloc(i, sizeof(char)))== 0){
printf("Memoria insuficiente...\n");
exit(1);
}
if((textoSaida = (char *)calloc(i, sizeof(char)))== 0){
printf("Memoria insuficiente...\n");
exit(1);
}
fscanf(arqEntrada, "%c", &textoEntrada[i-2]);
if(textoEntrada[i-2] == '{FONTE}') break;
textoSaida[i-2] = encode(textoEntrada[i-2]);
fprintf(arqSaida, "%c", textoSaida[i-2]);
i++;
}
printf("Criptografia do arquivo realizada com sucesso...\n\n\n");
fclose(arqEntrada);
fclose(arqSaida);
free(textoEntrada);
free(textoSaida);
system("cat texto_criptografado.txt");
__fpurge(stdin);
printf("\n\nPressione ENTER para continuar...");
ch = getchar();
}
int main(void){
char caminho[100];
LOOP:
set();
printf("\t\t* * * * * CRIPTOGRAFIA DE ARQUIVO * * * * *\n\n\n");
printf("Arquivo: ");
__fpurge(stdin);
scanf("%[^\n]", caminho);
abrirArquivo(caminho);
goto LOOP;
}
DoS criado em C para uso didáticos
Algoritmo de euclides estendido (calcula o D RSA)
Cifra de Cesar - Cripto-Analise
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
Contorno de BUG do "color picker" para COSMIC Desktop
Pós Instalação do POP! OS 24.04
Contorno para BUG de som no COSMIC Desktop
Pfsense inacessivel após um periodo de tempo [RESOLVIDO] (3)









