/** Clase para encriptar y descifrar con el cifrador de César. */ public static final char[] abc = {'A','B','C','D','E','F','G','H', 'I', 'J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8' ,'9','0','.',',',';',' '}; protected char[] encriptar = new char[abc.length]; // Arreglo encriptamiento protected char[] descifrar = new char[abc.length]; // Arreglo desciframiento protected int recorrer; /** Constructor para inicializar los arreglos de encriptamiento y * desciframiento */ public Cesar(int numRec) { recorrer=numRec; for (int i=0; i<abc.length; i++){ if(numRec>=0){ encriptar[i] = abc[(i+abc.length+recorrer)%abc.length]; // rotar alfabenumpuntos numRec lugares descifrar[i] = abc[i]; // descifrar inverso a encriptar } else{ encriptar[i] = abc[(recorrer+abc.length-i)%abc.length]; // rotar alfabenumpuntos numRec lugares descifrar[i] = abc[i]; // descifrar inverso a encriptar } } } /** Método de encriptamiento */ public String encriptar(String secreto) { char[] mensj = secreto.toCharArray(); // arreglo mensaje for (int j=0; j<mensj.length; j++){ // ciclo de encriptamiento for(int i=0;i<abc.length;i++){ if (mensj[j]==abc[i]){ mensj[j]=encriptar[i]; // usar letra como índice break; } } } return new String(mensj); } /** Método de desciframiento */ public String descifrar(String secreto) { char[] mensj = secreto.toCharArray(); // arreglo mensaje for (int j=0; j<mensj.length; j++){ // ciclo desciframiento for(int i=0;i<abc.length;i++){ if(mensj[j]==encriptar[i]){ mensj[j] = descifrar[i]; // usar letra como índice break; } } } return new String(mensj); } /** Metodo main para probar el cifrador de César */ public static void main(String[] args) { Cesar cifrador = new Cesar(-1); // Crear un objeto cifrado de César con desplazamiento 6 el rango de desplazamiento va de 0 a 39 System.out.println("Orden de Encriptamiento = " + new String(cifrador.encriptar)); System.out.println("Orden de Descifrado = " + new String(cifrador.descifrar)); String secreto = "TE AMO CARI;O"; secreto = cifrador.encriptar(secreto); System.out.println(secreto); // el texto cifrado secreto = cifrador.descifrar(secreto); System.out.println(secreto); // debería ser texto plano } }