Ir para conteúdo
Fórum Script Brasil

Pergunta

#include <iostream>
#include <string.h>
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
#include<fstream>

using namespace std;
////Com Espaços e Numeros
void cript_espnum()
{
      char frase[30],frase_cript[30],chave[10],chave_estendida[30],alfabeto[26][26],a='A',z,aux_linha,aux_coluna;
      int i,j;
      for(i=0;i<26;i++)
      {
            z=a;
            for(j=0;j<26;j++)
            {
                  alfabeto[i][j]=z;
                  if(z=='Z')
                  {
                        z='A';
                  }
                  else
                  {
                        z++;
                  }
            }
      a++;
      }
      setbuf(stdin,NULL);
      cout << "Digite a frase a ser criptografada:";
      cin.getline(frase,30);
      cout << "Digite a chave:";
      cin >> chave;
      for(i=0;i<strlen(frase);i++)
      {
            frase[i]=toupper(frase[i]);
      }
      for(i=0;i<strlen(chave);i++)
      {
            chave[i]=toupper(chave[i]);
      }
      for(int i=0,cont=0;i<strlen(frase);i++)
    {
        if(chave[cont] != '\0')
            {
                  chave_estendida[i] = chave[cont];
            }
            else
            {
                  cont = 0;
                  chave_estendida[i] = chave[cont];
            }
            cont++;
      }
      chave_estendida[strlen(frase)] = '\0';
      for(int i=0;i<strlen(frase);i++)
      {
            if(frase[i]>=65 && frase[i]<=90)
            {
                 aux_linha=frase[i]-65;
                 aux_coluna=chave_estendida[i]-65;
                 frase_cript[i]=alfabeto[aux_linha][aux_coluna];
            }
            else
            {
                 frase_cript[i]=frase[i];
            }

      }
      cout << "Frase criptografada:" << endl;
      cout << frase_cript<< endl;
      exit(0);
}
//Com Espaços
void cript_espaco()
{
      char frase[30],frase_cript[30],chave[10],chave_estendida[30],alfabeto[26][26],a='A',z,aux_linha,aux_coluna;
      int i,j;
      for(i=0;i<26;i++)
      {
            z=a;
            for(j=0;j<26;j++)
            {
                  alfabeto[i][j]=z;
                  if(z=='Z')
                  {
                        z='A';
                  }
                  else
                  {
                        z++;
                  }
            }
      a++;
      }
      setbuf(stdin,NULL);
      cout << "Digite a frase a ser criptografada:";
      cin.getline(frase,30);

      cout << "Digite a chave:";
      cin >> chave;
      for(i=0;i<strlen(frase);i++)
      {
            frase[i]=toupper(frase[i]);
      }
      for(i=0;i<strlen(chave);i++)
      {
            chave[i]=toupper(chave[i]);
      }
      for(int i=0,cont=0;i<strlen(frase);i++)
    {
        if(chave[cont] != '\0')
            {
                  chave_estendida[i] = chave[cont];
            }
            else
            {
                  cont = 0;
                  chave_estendida[i] = chave[cont];
            }
            cont++;
      }
      for(int i=0;i<strlen(frase);i++)
      {
            if(frase[i]==32)
            {
                  frase_cript[i]=32;
            }
            else
            {
                 aux_linha=frase[i]-65;
                 aux_coluna=chave_estendida[i]-65;
                 frase_cript[i]=alfabeto[aux_linha][aux_coluna];
            }

      }
      cout << "Frase criptografada:" << endl;
      cout << frase_cript << endl;
      exit(0);
}
void descript()
{
char frase_cript[500],chave[10],chave_estendida[500],alfabeto[26][26],aux,frase_descrip[500],auxl;
int i;
setbuf(stdin,NULL);
ifstream arquivo_entrada;
cout << "Digite a frase criptografada:";
cin.getline(frase_cript,500);
cout << "Digite a chave utilizada:";
cin >> chave;
for(i=0;i<strlen(frase_cript);i++)
{
      frase_cript[i]=toupper(frase_cript[i]);
}
for(i=0;i<strlen(chave);i++)
{
      chave[i]=toupper(chave[i]);
}
char a = 'A';
char z;
      for (int i = 0; i < 26; i++)
      {
            z = a;
            for (int j = 0; j < 26; j++)
            {
                  alfabeto[i][j] = z;
                  if (z == 'Z')
                  {
                        z = 'A';
                  }
                  else
                  {
                        z++;
                  }
            }
            a++;
      }
    for(int i=0,cont=0;i<strlen(frase_cript);i++)
    {
        if(chave[cont] != '\0')
            {
                  chave_estendida[i] = chave[cont];
            }
            else
            {
                  cont = 0;
                  chave_estendida[i] = chave[cont];
            }
            cont++;
      }
      chave_estendida[strlen(frase_cript)] = '\0';
      cout << chave_estendida << endl;
      for(int i=0;i<strlen(frase_cript);i++)
      {
            aux=chave_estendida[i]-65;
                  for(int j=0;j<26;j++)
                  {
                        if(alfabeto[j][aux]==frase_cript[i])
                        {
                              auxl=j+65;
                        }
                  }
                   frase_descrip[i]=auxl;
      }

        cout << "Frase descriptografada:" << endl;
		cout << frase_descrip << endl;
		exit(0);
}



//Função criptografa
void criptografa()
{
	char alfabeto[26][26],frase[30];
	char chave[10];
    char a = 'A';
    char z;
		for (int i = 0; i < 26; i++)
		{
			z = a;
			for (int j = 0; j < 26; j++)
			{
				alfabeto[i][j] = z;
				if (z == 'Z')
				{
					z = 'A';
				}
				else
				{
					z++;
				}
			}
			a++;
		}
		setbuf(stdin,NULL);
		cout << "Digite uma frase:";
		cin.getline(frase, 30);
		for (int i = 0; i < strlen(frase); i++)
            {
                  frase[i]=toupper(frase[i]);
            }
            for (int i = 0; i < strlen(frase); i++)
            {
			if (frase[i] == ' ')
			{
				for (int y = i; y < strlen(frase); y++)
					frase[y] = frase[y + 1];
					i--;
			}
            }
		cout << frase << endl;
		cout << "Digite a chave:";
		cin >> chave;
		for(int i=0;i<strlen(chave);i++)
            {
                  chave[i]=toupper(chave[i]);
            }
		char aux[30];


		for (int i = 0, cont = 0; i < strlen(frase); i++)
		{
			if (chave[cont] != '\0')
			{
				aux[i] = chave[cont];
			}
			else
			{
				cont = 0;
				aux[i] = chave[cont];
			}
			cont++;
		}
		aux[strlen(frase)] = '\0';
		cout<<aux << endl;

		char fraseaux[30],auxl,auxc,linha,frase_descript[30];
        for(int i=0;i<strlen(frase);i++)
        {
            auxl=frase[i]-65;
            auxc=aux[i]-65;
            fraseaux[i]=alfabeto[auxl][auxc];
        }
        exit(0);
}
//Função menu interno
void Menuinterno ()
{
      char opcao;
      while(opcao!='a'||opcao!='b'||opcao!='c')
      {
            system("cls");
            cout << "\n\tCriptografar";
            cout << "\n\na - Sem espaco";
            cout << "\n\nb - Manter os espaco";
            cout << "\n\nc - Manter numeros";
            cout << "\n\nEscolha uma opcao: ";
            cin >> opcao;
            switch(opcao)
            {
            case 'a':
                criptografa();
                  break;
            case 'b':
                  cript_espaco();
                  break;
            case 'c':
                  cript_espnum();
                  break;
            default:
                  cout << "Opcao Invalida!Tente novamente!";
                  system("pause");
            }
      }
}
//Função de menu
void Menu()
{
      char opcao;
      while(1)
      {
            system("cls");
            cout<< "\n\tPrograma de Criptografia";
            cout<<"\n\n 1 - Criptografar Arquivo";
            cout << "\n\n 2 - Descriptografar Arquivo";
            cout << "\n\n 3 - Creditos";
            cout << "\n\n 4 - Sair";
            cout << "\n\n Informe a opcao desejada: ";
            cin >> opcao;
            setbuf(stdin,NULL);
            switch(opcao)
            {
            case '1':
                  Menuinterno();
                  break;
            case '2':
                  descript()
;                  break;
            case '3':
                  cout << "\n\nProgramadores:";
                  cout << " Leonardo\n";
                  system("pause");
                  break;
            case '4':
                  cout << "\nFinalizando o programa!";
                  exit(0);
                  break;
            default:
                  cout << "Opcao Invalida!Tente novamente...\n";
                  system("pause");

            }
      }
}
int main()
{
      Menu();
}












 

Eu gostaria que Alguém me ajuda-se a refinar este código e a colocar arquivo nele para poder ler um arquivo de texto ao invés de escrever uma frase só, e outra um menu que retornasse .

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Ola amigo, segue um código que eu tenho de criptografia, esta em C ao invés de C++, mas acredito que sirva para te dar uma ideia de como fazer:

 

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// Configuracao da chave para criptografia
char CHAVE[500];
int TAM_CHAVE = strlen(CHAVE);

bool set_chave(char chave[]){
    if(strlen(chave)<500){
        strcpy(CHAVE,chave);
        TAM_CHAVE = strlen(CHAVE);
        return true;
    }else{
    return false;
    }

}
//---------------------------//

// Vetor de entrada do texto a ser criptografado:

char TEXTO[10000];
int TAM_TEXTO = 10000;


//----------------------------------------------

int TEXTO_CRIPT[10000];


bool Criptografar(){
    int aux = 0;
    int CHAVE_int;
    int pos_texto;

    for (int i=0; i < strlen(TEXTO); i++){
        TEXTO_CRIPT[i] = TEXTO[i];
    }

    printf("\n -- %d\n",TEXTO_CRIPT[0]);

    for (aux=0; aux<strlen(TEXTO); ){
        for (int i=0; i<TAM_CHAVE; i++){
         TEXTO_CRIPT[aux] *= CHAVE[i]; // Também pode ser:  TEXTO_CRIPT[aux] = TEXTO_CRIPT[aux] * CHAVE[i];
        aux++;
        }
    }
    printf("\n -- %d\n",TEXTO_CRIPT[0]);
    return true;
}

bool Descriptografar(){
    FILE *arquivo;
    int valor;
    int pos_chave;
    int pos_texto;

    arquivo = fopen("c:\\cript\\arquivos_recebidos\\criptografado.txt","r");

    if(arquivo==NULL){
        return false;
    }
    pos_chave = 0;
    pos_texto = 0;

    while(!feof(arquivo)){
        fscanf(arquivo,"%d",&valor);

        valor /= CHAVE[pos_chave];

        TEXTO[pos_texto] =(char)valor;
        pos_texto++;

        if(pos_chave==TAM_CHAVE-1){
            pos_chave = 0;
        }else{
            pos_chave++;}
    }
    fclose(arquivo);
    return true;
}

// ------------- Menus ---------------//

void Recebe_texto(char tipo[]){
    char aux[TAM_TEXTO];
    char pause;
    bool ok;

    FILE *arquivo;
    char palavra[100];

    if(strcmp(tipo,"msg")==0){
        printf("\n\nReceber Texto para criptografar\n\n");
        printf("\n\nDigite o texto: ");
        gets(aux);

        if(strlen(aux) <= TAM_TEXTO){
            strcpy(TEXTO,aux);
             printf("\n\nTexto recebido com sucesso\n\n");
             printf("\n\nCriptografando texto...\n\n");

            ok = true;
        }else{
             printf("\n\nErro!\n Tamanho do texto excede o limite de caracteres\n\n");
             ok = false;
              system("pause");
            }


    }else if(strcmp(tipo,"arquivo")==0){
        printf("\n\tInstrucoes para importar um arquivo texto");
        printf("\n\n 1 - Renomeio o arquivo para original.txt");
        printf("\n\n 2 - Copie o arquivo para a pasta que sera aberta a seguir)");
        printf("\n\n 3 - Feche o explorador e retorne a aplicacao");

          printf("\n\n Pressione enter para abrir a pasta");


        scanf("%c", &pause);
        setbuf(stdin,NULL);

        system("explorer c:\\Cript\\arquivos_originais\\");
        printf("\n\n Pressione enter apos colar o arquivo na pasta...\n");
        scanf("%c", &pause);
        setbuf(stdin,NULL);
        printf("\n\n Importanto arquivo...\n\n");

        arquivo = fopen("c:\\Cript\\arquivos_originais\\original.txt","r");
        if(arquivo==NULL){
            printf("\n\n Erro ao abrir o arquivo..\n\n");
        }else{
            while(!feof(arquivo)){
                fscanf(arquivo,"%s",palavra);
                strcat(aux," ");
                strcat(aux,palavra);
            }
        fclose(arquivo);
        if(strlen(aux) <= TAM_TEXTO){
            strcpy(TEXTO,aux);
            printf("\n\nTexto recebido com sucesso\n\n");
            printf("\n\nCriptografando texto...\n\n");

            ok = true;
        }else{
             printf("\n\nErro!\n Tamanho do texto excedo o limite de caracteres\n\n");
             ok = false;
             system("pause");
            }
        }

    }else{
        printf("\n\nErro ao receber texto\n\n");
    }

    if(ok){
        if(Criptografar()){
            printf("\n\nTexto criptografado com sucesso\n\n");

            arquivo = fopen("c:\\cript\\arquivos_gerados\\criptografado.txt","wt");
        if(arquivo==NULL){
            printf("\n\n Erro ao criar o arquivo..\n\n");
        }else{
            for (int i=0; i<strlen(TEXTO); i++){
                fprintf(arquivo,"%d ",TEXTO_CRIPT[i]);
                }
            }
            fclose(arquivo);

            printf("\n\nPressioner enter para abrir a pasta do arquivo gerado \n\n");
            scanf("%c", &pause);
            setbuf(stdin, NULL);
            system("explorer c:\\cript\\arquivos_gerados\\");
        }else{
             printf("\n\nNao foi possivel criptografar o texto\n\n");
        }

    }
}

void Receber_Arquivo_cript(){
        char pause;
        printf("\n\tInstrucoes para importar um arquivo criptografado");
        printf("\n\n 1 - Renomeie o arquivo para criptografado, mantendo sua extensao original");
        printf("\n\n 2 - Copie o arquivo para a pasta que sera aberta a seguir)");
        printf("\n\n 3 - Feche o explorador e retorne a aplicacao");

        printf("\n\n Pressione enter para abrir a pasta");

        scanf("%c", &pause);
        setbuf(stdin,NULL);

        system("explorer c:\\Cript\\arquivos_recebidos\\");
        printf("\n\n Pressione enter apos colar o arquivo na pasta...\n");
        scanf("%c", &pause);
        setbuf(stdin,NULL);
        printf("\n\n Importanto arquivo...\n\n");

    if(Descriptografar()){
        printf("\n Arquivo descriptografado com sucesso\n");
        system("pause");
        system("cls");
        printf("\n%s\n\n",TEXTO);
        system("pause");
    }else{
     printf("\n Nao foi possivel descriptografar o arquivo\n");}
}

void Menu_Criptografar(){
    int opcao;
    printf("\n\tCriptografia de dados");
    printf("\n\nCriptografar texto ou arquivo");
    printf("\n\n 1 - Digitar texto");
    printf("\n\n 2 - Importar arquivo (txt)");
    printf("\n\n 3 - Voltar ao menu princiapl");
    printf("\n\n Informe a opcao desejada: ");
    scanf("%d", &opcao);
    setbuf(stdin, NULL);
    switch(opcao){
        case 1:
           system("cls");
           Recebe_texto("msg");
            break;
        case 2:
            system("cls");
            Recebe_texto("arquivo");
            break;
        case 3:
            break;
        default:
            printf("Opcao invalida! Tente novamente...");
    }
}





void Menu(){
    char chave[500];
    int opcao;
    while(1){ // while 1(um) é igual a infinito
        system("cls");
        printf("\n\tCriptografia de dados");
        printf("\n\n 1 - Criptografar Texto");
        printf("\n\n 2 - Receber arquivo");
        printf("\n\n 3 - Configurar Chave");
        printf("\n\n 4 - Sair");
        printf("\n\n Informe a opcao desejada: ");
        scanf("%d", &opcao);
        setbuf(stdin, NULL);
        switch(opcao){
        case 1:
           system("cls");
           Menu_Criptografar();
            break;
        case 2:
            system("cls");
            Receber_Arquivo_cript();
            break;
        case 3:
            system("cls");
            printf("\n\nInforme a chave: ");
            gets(chave);
            if(set_chave(chave)){
                printf("\n\n Chave modificada com sucesso!\n");
            }else{
                printf("\n\n Chave não pode ser modificada!\n");
            }
            system("pause");
            break;
        case 4:
            printf("\nFinalizando... \n\n");
            system("pause");
            exit(0);
            break;
        default:
            printf("Opcao invalida! Tente novamente...");
        }

    }


}

// -----------------------------------------------

int main()
{
    set_chave("AbCd");
    Menu();
    system("pause");
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...