Skip to content

Instantly share code, notes, and snippets.

@bitmaybewise
Created June 2, 2012 23:32
Show Gist options
  • Save bitmaybewise/2860472 to your computer and use it in GitHub Desktop.
Save bitmaybewise/2860472 to your computer and use it in GitHub Desktop.
Java Caesar Cipher
import java.util.Scanner;
/**
* Programa simples que implementa a cifra Cesar.
* -> Contem bloco principal com exemplo de funcionamento.
*
* Mais informacoes:
* 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){
StringBuilder textoCifrado = new StringBuilder();
int tamanhoTexto = texto.length();
for(int c=0; c < tamanhoTexto; c++){
int letraCifradaASCII = ((int) texto.charAt(c)) + chave;
// Verifica se o codigo ASCII esta no limite dos caracteres imprimiveis
while(letraCifradaASCII > 126)
letraCifradaASCII -= 94;
textoCifrado.append( (char)letraCifradaASCII );
}
return textoCifrado.toString();
}
/**
* Metodo que descriptografa um texto,
* utilizando a famosa cifra Cesar.
*/
public static String decriptar(int chave, String textoCifrado){
StringBuilder texto = new StringBuilder();
int tamanhoTexto = textoCifrado.length();
for(int c=0; c < tamanhoTexto; c++){
int letraDecifradaASCII = ((int) textoCifrado.charAt(c)) - chave;
// Verifica se o codigo ASCII esta no limite dos caracteres imprimiveis
while(letraDecifradaASCII < 32)
letraDecifradaASCII += 94;
texto.append( (char)letraDecifradaASCII );
}
return texto.toString();
}
public static void main(String[] args){
try {
Scanner entrada = new Scanner(System.in);
System.out.println("*****************************************************");
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();
String textoCriptografado = encriptar(chave, texto);
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.");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment