Jump to content
Fórum Script Brasil

Question

#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 to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.1k
×
×
  • Create New...