Entendendo criptografia

2 respostas
fredericodf

Bom dia a todos ! Estou em dúvida quanto a uma classe que usa criptografia. O código roda e compila, porém, eu nao entendi a parte que codifica os numeros. Abaixo estao a classe que criptografa e, em seguida, a classe que descriptografa. Eis o código abaixo:

// classe que criptografa uma numero de 4 digitos inserido pelo usuario

import java.util.Scanner;

public class Encrypt

{

// encrypt a four-digit number

public void encrypt()

{

Scanner input = new Scanner( System.in );

int number; // original number
int digit1; // first digit
int digit2; // second digit
int digit3; // third digit
int digit4; // fourth digit
int encryptedNumber; // encrypted number

// enter four digit number to be encrypted

System.out.print( "Enter a four digit number: " );

number = input.nextInt();

// encrypt

digit1 = ( number / 1000 + 7 ) % 10;

digit2 = ( number % 1000 / 100 + 7 ) % 10;

digit3 = ( number % 100 / 10 + 7 ) % 10;

digit4 = ( number % 10 + 7 ) % 10;

encryptedNumber = digit1 * 10 + digit2 +
digit3 * 1000 + digit4 * 100;

System.out.printf( “Encrypted number is %d\n”, encryptedNumber );
} // end method encrypt
} // end class Encrypt


agora a classe que descriptografa o numero:

// clase que descriptografa o numero criptografado anteriormente

import java.util.Scanner;

public class Decrypt

{

// decrypt a four-digit number

public void decrypt()

{

Scanner input = new Scanner( System.in );

int number; // original number
int digit1; // first digit
int digit2; // second digit
int digit3; // third digit
int digit4; // fourth digit
int decryptedNumber; // encrypted number

// enter four digit number to be decrypted

System.out.print( "Enter a four digit number: " );

number = input.nextInt();

// decrypt

// Esta é a parte que não estou entendendo. Alguém pode me fazer
// entender esta parte???

digit1 = ( number / 1000 + 3 ) % 10;

digit2 = ( number % 1000 / 100 + 3 ) % 10;

digit3 = ( number % 100 / 10 + 3 ) % 10;

digit4 = ( number % 10 + 3 ) % 10;

// fim da parte que não estou entendendo--------------------------------

decryptedNumber = digit1 * 10 + digit2 +
digit3 * 1000 + digit4 * 100;

System.out.printf( “Decrypted number is %d\n”, decryptedNumber );
} // end method decrypt
} // end class Decrypt

2 Respostas

T

Isso não é criptografia (criptografia usa coisas muito, muito mais complicadas que isso) e sim uma brincadeira com números.
Você queria entender as fórmulas (como que uma função é inversa da outra, é isso?)

Basicamente o que foi feito na parte de “criptografia” é pegar todos os dígitos , somar 7 a cada um deles (se o número passar de 10, tiramos 10), e pô-los em ordem contrária.
Por exemplo: se tivermos o dígito 8, então 8 + 7 = 15, e como passou de 10, fica o dígito 5.

Na parte de “decifração”, pegamos todos os dígitos, somamos 3 a cada um deles (se o número passar de 10, tiramos 10), e novamente invertemos a ordem.
No nosso caso, o dígito “cifrado” era 5, somando 3 dá 8, ou seja, recuperamos o dígito original.

F

Acredito que isso não seja realmente criptografia. é muito simples, né?!

Trata-se de um exercicio de um livro que estou estudando. Mesmo assim, muito obrigado pela explicação. Agora entendi o que foi feito.

Obrigado mesmo, thingol.

Criado 19 de outubro de 2007
Ultima resposta 20 de out. de 2007
Respostas 2
Participantes 3