Jump to content
Fórum Script Brasil
  • 0

[Deitel] Programa de criptografia


brunoandrad
 Share

Question

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

0 answers to this question

Recommended Posts

There have been no answers to this question yet

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.8k
    • Total Posts
      646.6k
×
×
  • Create New...