public class Mi_utils { public static String cifradoCesar(String contenidoFicheroString, int desplazamiento) { String abcMin = "abcdefghijklmnopqrstuvwxyz"; String abcMax = abcMin.toUpperCase(); char letra; int posicionInicial; int posicionFinal; String textoCifrado = ""; for (int i = 0; i < contenidoFicheroString.length(); i++) { letra = contenidoFicheroString.charAt(i); if (Character.isLowerCase(letra)) { posicionInicial = abcMin.indexOf(letra); posicionFinal = posicionInicial + desplazamiento; if (posicionFinal > 25) { posicionFinal = posicionFinal % 26; } else if (posicionFinal < 0) { posicionFinal = 26 + posicionFinal; } letra = abcMin.charAt(posicionFinal); } if (Character.isUpperCase(letra)) { posicionInicial = abcMax.indexOf(letra); posicionFinal = posicionInicial + desplazamiento; if (posicionFinal > 25) { posicionFinal = posicionFinal % 26; } else if (posicionFinal < 0) { posicionFinal = 26 + posicionFinal; } letra = abcMax.charAt(posicionFinal); } textoCifrado = textoCifrado + letra; } return textoCifrado; } public static String cifrarFichero(String nombreFichero, int desplazamiento) { File f = new File(nombreFichero); FileReader fr = null; ArrayList contenidoFichero = new ArrayList(); try { fr = new FileReader(f); } catch (FileNotFoundException ex) { System.out.println("ERROR--->" + ex.getMessage()); } try { int caracter = fr.read(); while (caracter != -1) { contenidoFichero.add((char) caracter); caracter = fr.read(); } } catch (IOException ex) { System.out.println("ERROR ---> " + ex.getMessage()); } String contenidoFicheroString = ""; char caracterACaracter = '1'; for (int i = 0; i < contenidoFichero.size(); i++) { caracterACaracter = contenidoFichero.get(i); contenidoFicheroString = contenidoFicheroString + String.valueOf(caracterACaracter); } // System.out.print(contenidoFicheroString); System.out.println("------------------------------------"); String textoCifrado = cifradoCesar(contenidoFicheroString, desplazamiento); //System.out.print(textoCifrado); return textoCifrado; } public static int obtenerDesplazamiento(String textoCifrado) { String abcMin = "abcdefghijklmnopqrstuvwxyz"; int[] cuentaLetras = new int[26]; int posicionRepetida = 0; int mayor = 0; int desplazamiento; for (int i = 0; i < textoCifrado.length(); i++) { for (int j = 0; j < abcMin.length(); j++) { if (textoCifrado.charAt(i) == abcMin.charAt(j)) { cuentaLetras[j] = cuentaLetras[j] + 1; } } } for (int i = 0; i < cuentaLetras.length; i++) { if (cuentaLetras[i] > mayor) { mayor = cuentaLetras[i]; posicionRepetida = i; } } desplazamiento = 4 - posicionRepetida; return desplazamiento; } }