El Cifrado Cesar es cambiar las letras de un texto "desplazándolas" todas el mismo número de veces.
Por ejemplo, si tenemos el texto: ABC
Y hacemos un desplazamiento de 2, pues quedará cifrado así CDE
O si fuera desplazamiento 3, quedaría: DEF
Una forma de hacer esto en Java, es valernos del codigo ASCII que tiene cada caracter.
Por ejemplo, para hacer "desplazamiento 2" a la letra A y convertirla en C.
Su codigo ASCII es 65.
Si le sumamos el desplazamiento: 65 + 2 = 67
67 es el codigo ASCII de C, así que ya la tenemos convertida.
Vale, ¿cómo hacemos esto en Java?
Supongamos que tenemos esta cadena:
En Java no podemos modificar un String, así que para cifrar esta cadena en realidad tendremos que construir una nueva.
Esta nueva cadena empezará vacía y lo que iremos haciendo será concatenar las letras ya cifradas (desplazadas) una a una.
Vale, ahora tenemos que ir letra a letra, obtener su codigo ASCII, sumarle el desplazamiento, y volver a convertir ese codigo ASCII desplazado en una letra.
- Para recorrer las letras de la cadena, usamos un bucle.
- Para obtener el codigo ASCII, contamos con un método que nos da la clase String: codePointAt();
- Una vez tenemos el codigo ASCII, le sumamos el desplazamiento y lo convertimos en un char.
- Concatenamos ese char a la cadena que estamos construyendo con las letras ya cifradas.
Algo así:
Una vez hayas entendido esto, no creo que tengas problemas en hacer los métodos que te están pidiendo.
Desencriptar es hacer lo mismo, pero restando el desplazamiento en lugar de sumarlo.
Por cierto, esto que he escrito es una versión muy simplificada y en realidad no es del todo perfecta.
Por ejemplo, si el texto contiene la letra 'z' y hacemos un desplazamiento de 2, debería convertirse en una 'b' porque ha de volver al principio del alfabeto.
Pero esto no está contemplado en este código y en realidad la 'z' (codigo ASCII: 122) acabará convertida en el símbolo
pipe '|' (codigo ASCII: 124)
En el caso de la letra 'ñ', caracter ajeno al alfabeto inglés, tampoco recibirá un desplazamiento correcto.
Corregir esto para que funcione como ha de ser, es un poco engorroso y de hecho la solución más óptima probablemente sea prescindir de la tabla ASCII y contruir nuestra propia tabla con un array de chars.
Así que de momento, ignora estos defectillos y realiza el ejercicio sin tenerlos en cuenta.
Luego, cuando tengas el ejercicio completado y lo hayas entendido bien, puedes plantearte mejorarlo corrigiendo lo que acabamos de comentar.