Entendendo Criptografia

1 resposta
F

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

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

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

[b]// fim da parte que não estou entendendo--------------------------------[/b]

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

  System.out.printf( "Decrypted number is %d\n", decryptedNumber );

} // end method decrypt
} // end class Decrypt


Alguém pode me ajudar a entender a parte em negrito no código acima??

1 Resposta

L
  • pego o numero descriptografado, somei 2, diminui 5 e multipliquei por 3 = numero “criptografado”
  • pego o numero criptografado, divido por 3, somo 5, substraio 2 = número “descriptografado”

Ou seja, ali ele faz o inverso do criptografa (não tão idiota como o meu hehe). Eu não cheguei a olhar a fundo a formula que você usa para criptografar e descriptografar, mas isso que você não esta entendendo é mais uma questão de matematica, faz um teste de mesa criptografando e descriptografando um número usando aquelas formulas que vc vai entender.

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