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;
}
Pergunta
brunoandrad
Estou criando um programa de criptografia de um exercício do livro do Deitel:
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:
Alguém consegue me dar uma luz?
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.