Hola parceros, bueno luego de terminar la solución del reto de yashira “Trial Version”, aqui expongo el código que use para tal reto. Adicional a esto pues me pareció muy interesante la forma de cifrar y descifrar datos =).
Si pueden observar el código tiene cositas adicionales, como un menú, lee un archivo “entrada.txt” y arroja una “salida.txt”. No siendo más ahora si vamos a la acción
. He colocado algunos comentarios documentando el código, sin embargo creo que esta muy claro
/****
* msg : /&4=91 5)?1= 5$35==14& 5$ {$1 31)31=1 45 ${5+ - )5$?9=m5 =5- 45 {$ 5)/139& 9$69$9?&
* @description : Reto para yashira
* @author : D-m-K
***/
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
public class TrialRamon {
//Miembros de clase
static BufferedReader br;
//Patron de cadenas para cifrar y descifrar
public final static String str1 = "1234567890!#$%&/(=)?{¡@*-+";
public final static String str2 = "abcdefghijklnñopqrstuvwxyz";
public static File fe;
public static boolean abierto;
//Main
public static void main(String[] args) throws IOException {
//Instacio y defino los datos de entrada
fe = new File("entrada.txt");
BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));
int op;
do{
System.out.println(" 1. Cifrar datos");
System.out.println(" 2. Descifrar datos");
System.out.println(" 3. Salir
");
System.out.print(" Opcion >>");
op = Integer.parseInt(entrada.readLine());
//Evaluo la opcion ingresada
switch(op){
case 1:
Criptar();
break;
case 2:
DesCriptar();
break;
case 3:
System.out.println("Hasta luego!");
System.exit(0);
break;
}
}while(op != 3);
}
//Codifico los datos del fichero de entrada
public static void Criptar() throws IOException {
//Evaluo si el fichero pudo ser abierto
if(fe.exists()){
br = new BufferedReader(new FileReader(fe));
abierto = true;
}else{
System.out.println("El archivo no existe");
}
if(abierto){
//Creo el fichero de salida
PrintWriter out = new PrintWriter(new FileWriter("salida.txt"));
//Realizo el cifrado de los datos
String linea = "";
while ((linea = br.readLine()) != null) {
System.out.println(linea);
for (int i = 0; i < str1.length(); i++) {
linea = linea.toLowerCase();
linea = linea.replace(str2.charAt(i), str1.charAt(i));
}
System.out.println(linea);
//Escribo la linea cifrada en el archivo
out.println(linea);
}
//Aseguro los datos de salida y cierro los ficheros
br.close();
out.flush();
out.close();
}else{
System.out.println("\n ERROR : El archivo no pudo ser abierto");
}
System.out.println("leyendo");
}
//Decodifica los datos del fichero de entrada
public static void DesCriptar() throws IOException{
//Evaluo si el fichero pudo ser abierto
if(fe.exists()){
br = new BufferedReader(new FileReader(fe));
abierto = true;
}else{
System.out.println("El archivo no existe");
}
if(abierto){
//Creo el fichero de salida
PrintWriter out = new PrintWriter(new FileWriter("salida.txt"));
//Realizo el cifrado de los datos
String linea = "";
while ((linea = br.readLine()) != null) {
System.out.println(linea);
for (int i = 0; i < str1.length(); i++) {
linea = linea.toLowerCase();
linea = linea.replace(str1.charAt(i), str2.charAt(i));
}
System.out.println(linea);
//Escribo la linea cifrada en el archivo
out.println(linea);
}
//Aseguro los datos de salida y cierro los ficheros
br.close();
out.flush();
out.close();
}else{
System.out.println("\n ERROR : El archivo no pudo ser abierto");
}
System.out.println("leyendo");
}
}
Hakuna Matata! Greetings to all and happy bandwidth.