Ir para conteúdo
Fórum Script Brasil
  • 0

[Deitel] Programa de criptografia


brunoandrad

Pergunta

Estou criando um programa de criptografia de um exercício do livro do Deitel:

Uma empresa deseja transmitir dados através do telefone, mas existe a preocupação de que seus telefones possam estar grampeados. Todos os seus dados são transmitidos como inteiros de quatro dígitos. A empresa pediu a você que escrevesse um programa para criptografar os dados de forma que eles possam ser transmitidos com mais segurança. Seu programa deve ler um inteiro de quatro dígitos e criptografá-lo da seguinte maneira: Substitua cada dígito pelo resultado da expressão (soma daquele dígito com 7) modulus 10 (ou seja, o resto da divisão por 10 do número obtido pela soma daquele dígito com 7). Depois, troque o primeiro dígito pelo terceiro e troque o segundo dígito com o quarto. A seguir, imprima o inteiro criptografado. Escreva um programa separado que receba um inteiro criptografado e decriptografe-o para que seja obtido o número original.

Já fiz o código de criptografia, mas tenho dois problemas, os numeros de 0 à 3 geram dois digitos, o que atrapalhará na descriptografia.

E e também não sei como descriptografar, como inverter a função de resto de divisão:

a = ((a+7)%10+7);

Abaixo o que eu já fiz de código:

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

// ler um inteiro de 4 digitos
// substituir cada digito por (digito+7)%10+(7)
//  trocar o primeiro pelo terceiro e o segundo pelo quarto
// Imprimir o inteiro criptografado
// Criar um que descriptografe

void criptografa(){

    int num,a,b,c,d;

    printf("\nDigite o numero de 4 digitos que sera criptografado: ");
    scanf("%d", &num);

    //Inicia Criptografia
        a = num/1000;
        b = (num%1000)/100;
        c = (num%100)/10;
        d = num%10;


        printf("separado: %d %d %d %d\n", a,b,c,d);

        a = ((a+7)%10+7);
        b = ((b+7)%10+7);
        c = ((c+7)%10+7);
        d = ((d+7)%10+7);

        printf("Ordenado: %d %d %d %d\n", a,b,c,d);

        printf("Descriptografado: %d\n", num);
        printf("Criptografado: %d%d%d%d\n", c,d,a,b);
        system("pause");

 }

void descriptografa()
{
   
// Inverter equacao a = ((a+7)%10+7)
}

void menu()
{
    int  op;

    do{
    printf("\n\n Criptografia!!! \n\n");

    printf("1 - Criptografar\n");
    printf("2 - Descriptografar\n");
    printf("3 - Sair\n\n");
    printf("Escolha a opcao desejada:");
    scanf("%d", &op);

    switch(op){

        case 1:
            criptografa();
            break;

        case 2:
            descriptografa();
            break;

        case 3:
            break;

        default:
            break;
        }
    }while(op!=3);

}
int main()
{

    menu();
    system("pause");
    return 0;
}

 

Alguém consegue me dar uma luz?

 

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...