JCriptoCesar, a cifra de Cesar em Java

Publicado por Hercules Merscher (última atualização em 16/09/2010)

[ Hits: 30.177 ]

Homepage: www.herculesdev.com.br

Download JCriptoCesar.java




Pequeno programa em Java com a implementação do algoritmo da cifra de Cesar. Para mais informações sobre o algoritmo acesse:

http://pt.wikipedia.org/wiki/Cifra_de_C%C3%A9sar

  



Esconder código-fonte

import java.util.Scanner;

/**
 * Programa simples que implementa a cifra Cesar.
 * -> Contém bloco principal com exemplo de funcionamento.
 * 
 * Mais informações:
 * http://pt.wikipedia.org/wiki/Cifra_de_C%C3%A9sar
 *
 * @author Hercules Lemke Merscher
 * @version 1.0
 */
public class JCriptoCesar {
   
   /**
    * Metodo que criptografa um texto,
    * utilizando a famosa cifra de Cesar.
    */
   public static String encriptar(int chave, String texto){
      // Variavel que ira guardar o texto crifrado
      StringBuilder textoCifrado = new StringBuilder();
      // Variavel com tamanho do texto a ser encriptado
      int tamanhoTexto = texto.length();
      
      // Criptografa cada caracter por vez 
      for(int c=0; c < tamanhoTexto; c++){
         // Transforma o caracter em codigo ASCII e faz a criptografia
         int letraCifradaASCII = ((int) texto.charAt(c)) + chave;
         
         // Verifica se o codigo ASCII esta no limite dos caracteres imprimiveis
         while(letraCifradaASCII > 126)
            letraCifradaASCII -= 94;

         // Transforma codigo ASCII criptografado em caracter ao novo texto
         textoCifrado.append( (char)letraCifradaASCII );
      }
      
      // Por fim retorna a mensagem criptografada por completo
      return textoCifrado.toString();
   }
   
   /**
    * Metodo que descriptografa um texto,
    * utilizando a famosa cifra Cesar.
    */
   public static String decriptar(int chave, String textoCifrado){
      // Variavel que ira guardar o texto decifrado
      StringBuilder texto = new StringBuilder();
      // Variavel com tamanho do texto a ser decriptado
      int tamanhoTexto = textoCifrado.length();
      
      // Descriptografa cada caracter por vez
      for(int c=0; c < tamanhoTexto; c++){
         // Transforma o caracter em codigo ASCII e faz a descriptografia
         int letraDecifradaASCII = ((int) textoCifrado.charAt(c)) - chave;
         
         // Verifica se o codigo ASCII esta no limite dos caracteres imprimiveis
         while(letraDecifradaASCII < 32)
            letraDecifradaASCII += 94;

         // Transforma codigo ASCII descriptografado em caracter ao novo texto
         texto.append( (char)letraDecifradaASCII );
      }
      
      // Por fim retorna a mensagem descriptografada por completo
      return texto.toString();
   }

   
   public static void main(String[] args){
      
      try {
         Scanner entrada = new Scanner(System.in);
      
         System.out.println("*****************************************************");
         
         // Informa texto e chave de criptografia
         System.out.print("Informe o texto a ser criptografado: ");
         String texto = entrada.nextLine();
         System.out.print("Informe a chave de deslocamento: ");
         int chave = entrada.nextInt();
         
         // Criptografando
         String textoCriptografado = encriptar(chave, texto);
         // Descriptografando
         String textoDescriptografado = decriptar(chave, textoCriptografado);
         
         // Imprimindo no CONSOLE os resultados 
         System.out.println("\n\nTEXTO CRIPTOGRAFADO: " + textoCriptografado);
         System.out.println("TEXTO DESCRIPTOGRAFADO: " + textoDescriptografado);
         
         System.out.println("*****************************************************");
         
      } catch (RuntimeException e) { // Trata erro de digitacao
         System.out.println("A chave de deslocamento foi informada incorretamente.");
         System.out.println("Execute o programa novamente e entre com uma chave valida.");
      }
      
   }
}

Scripts recomendados

Criptografia com MD5

Criptografia

planetas

Login Java web com MySQL com criptografia MD5

Simples PortScan


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts