some image

Codes and Tags

Cifrar y Descifrar en Java con nuestro propio charset

Etiquetas: , Blog, Programación No comments

¿Cuantas veces has deseado cifrar (encriptar) tus mensajes para pasarlos a un amigo, y que el pueda descifrarlos (decriptar) con una equivalencia para cada letra definida por uds.?. Bueno este algoritmo implementado en Java quizas es muy conocido y facil de utilizar.

Basicamente consiste en 3 partes :

1) Se define el charset (codificacion de caracteres) utilizados para cifrar y descifrar el mensaje.

2) Se utiliza un metodo que cifra el mensaje , donde se reemplaza cada caracter del charset 1 al charset 2 y voila!!!

2) Se utiliza un metodo que descifra el mensaje haciendo la inversa del metodo anterior, donde se reemplaza cada caracter del charset 2 al charset 1 y Hakuna Matata!!

Aqui esta el código

/***
 * Clase : Cipher
 * Clase de ejemplo que muestra una forma sencilla para
 * cifrar y descifrar un texto basado en un charset definidos
 * por nosotros mismos.
 * 
 * @author [D-m-K]
 * http://codesandtags.org
 */

public class Cipher {
	
	//Charset de caracteres cuando se cifra
	private String charset1 = "1234567890!#$%&/()=¿?¡_-+*:";
	//Charset de caracteres cuando se descifra
	private String charset2 = "abcdefghijklmnopqrstuvwxyz ";
	
	/**
	 * Metodo que recibe un texto y cifra el contenido de 
	 * acuerdo a los charset definidos
	 * @param texto
	 * @return texto
	 */
	public String cifrar(String texto){
		//Convierto a minuscula las letras del alfabeto que existan en el texto
		texto = texto.toLowerCase();
		//Reemplazo los caracteres del charset2 con los del charset1
		for (int i = 0; i < charset2.length(); i++) {
			texto = texto.replace(charset2.charAt(i), charset1.charAt(i));
		}
		//Retorno el texto cifrado con el charset2
		return texto;
	}
	
	/**
	 * Metodo que recibe un texto y descifra el contenido de 
	 * acuerdo a los charset definidos
	 * @param texto
	 * @return texto
	 */
	public String descifrar(String texto){
		//Convierto a minuscula las letras del alfabeto que existan en el texto
		texto = texto.toLowerCase();
		//Reemplazo los caracteres del charset1 con los del charset2
		for (int i = 0; i < charset1.length(); i++) {
			texto = texto.replace(charset1.charAt(i), charset2.charAt(i));
		}
		//Retorno el texto cifrado con el charset2
		return texto;
	}
	
	public static void main(String[] args){
		
		//Instancia de la clase Cipher y creacion de un nuevo objeto
		Cipher cipher = new Cipher();
		
		//Cifrando texto
		String textoCifrado = cipher.cifrar("codes and tags... ");
		System.out.println(textoCifrado);
		
		//Descifrando texto
		String textoDescifrado = cipher.descifrar(textoCifrado); 
		System.out.println(textoDescifrado);
		
		//Ejemplo con varias cadenas
		String[] cadenas = new String[4];
		cadenas[0] = "Los pollitos dicen, pio pio pio... cuando tienen hambre, cuando tienen frio";
		cadenas[1] = "Habia una vez una iguana con una cara de rana";
		cadenas[2] = "Hoy es Sabado y esta lloviendo en bogota, que vaina...";
		cadenas[3] = "Este es mi ultimo ejemplo jejeje....";
		
		//Cifrando cada cadena del arreglo
		System.out.println("\n Cifrando unas cuantas cadenas...");
		for (int i = 0; i < cadenas.length; i++) {
			cadenas[i] = cipher.cifrar(cadenas[i]);
			System.out.println("Cadena " + (i + 1) + " : " + cadenas[i]);
		}
		
		//Ahora Descifrando el contenido de las cadenas
		System.out.println("\n Descifrando las cadenas de ahorita...");
		for (int i = 0; i < cadenas.length; i++) {
			cadenas[i] = cipher.descifrar(cadenas[i]);
			System.out.println("Cadena " + (i + 1) + " : " + cadenas[i]);
		}
	}
}

Datos de salida

3&45=:1%4:¿17=...:
codes and tags... 

 Cifrando unas cuantas cadenas...
Cadena 1 : #&=:/&##9¿&=:4935%,:/9&:/9&:/9&...:3?1%4&:¿95%5%:81$2)5,:3?1%4&:¿95%5%:6)9&
Cadena 2 : 81291:?%1:¡5*:?%1:97?1%1:3&%:?%1:31)1:45:)1%1
Cadena 3 : 8&+:5=:=1214&:+:5=¿1:##&¡95%4&:5%:2&7&¿1,:(?5:¡19%1...
Cadena 4 : 5=¿5:5=:$9:?#¿9$&:505$/#&:050505....

 Descifrando las cadenas de ahorita...
Cadena 1 : los pollitos dicen, pio pio pio... cuando tienen hambre, cuando tienen frio
Cadena 2 : habia una vez una iguana con una cara de rana
Cadena 3 : hoy es sabado y esta lloviendo en bogota, que vaina...
Cadena 4 : este es mi ultimo ejemplo jejeje....

About Edwin Torres

Related Posts

  • Logo Java
  • Logo Java
  • Logo Java
  • Logo Java

Add your comment