[C] Criptografia por Inversão de bits

Publicado por Enzo de Brito Ferber 04/03/2006

[ Hits: 12.380 ]

Homepage: http://www.maximasonorizacao.com.br

Download criptografia.tar.gz




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.

  



Esconder código-fonte

#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;
}


Scripts recomendados

Cifra de César!

Criptografia rot13

DoS criado em C para uso didáticos

Faz um crash no Kernel do Linux

Esse código pode ser considerado um vírus?


  

Comentários
[1] Comentário enviado por FelipeAbella em 31/07/2006 - 07:59h

Meu primeiro programa de encriptação eu fiz com isto ai, depois eu passei a usar o Xor, ex:
10110110 ^
11001100 =
01111010
para pegar o valor anterior:
01111010 ^
11001100 =
10110110
Sendo este "11001100"(o segundo valor), a key usada para encriptar e desencriptar.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts