Cifrado Cesar. Algoritmo en Java

Hace ya bastante tiempo hice un algoritmo del método de Cifrado Cesar, este método de cifrado es bastante sencillo lo único que hay que hacer es un desplazamiento dependiendo del código de cifrado que le den a un texto, por ejemplo si quiero cifrar la letra A con un código 2, el resultado seria la letra C, bastante simple. Pueden leer la entrada en la Wikipedia para que tengan mas información.

Bien entre mis archivos encontré mi algoritmo de Cifrado Cesar, mas bien dos algoritmos que hacen lo mismo pero utilizando dos formas de resolver el problema.

La primera forma fue de una manera algo bastante ruda, ya que para que me fuera haciendo las operaciones de desplazamiento, hice bastantes malabares con las condiciones if y los ciclos while, en el código lo podrán ver.

Y el segundo algoritmo ya lo hice de un modo mas optimo, para empezar hice dos clases, una clase me detecta que tipo de carácter es, si es una letra mayúscula o minúscula un numero, o ninguno de los tres, esta clase es muy útil para otros programas en los que se necesite hacer lo mismo. La segunda clase es propiamente el método de cifrado pero utilizando matemática modular, esto hace que el código sea mas simple y limpio y que no tenga uno que estar quebrándose la cabeza con los if y while.

Explicare de manera muy breve el método del algoritmos mediante la matemática modular.

Como ya dije arriba el Cifrado Cesar se basa en un cifrado de desplazamiento, por ejemplo si queremos cifrar el texto A1 con un código 32 nos daría como resultado G3, ¿Porque?. Lo explicare por partes.

Si desplazamos la letra A 32 veces, para que sea mas sencillo de entender lo haré por partes si desplazamos a la A 26 posiciones nos daría A nuevamente, y luego tendriamos que desplazarla 6 veces que es lo que nos falta para llegar a 32 y A desplazada 6 veces nos da G, y listo eso es todo, lo mismo sucede con el numero 1, si lo desplazamos 10 posiciones nos da 1 otras 10 nos da 1 y otras 10 nos da 1 y dos que nos faltan para 32 nos da 3. Bastante fácil.

Ahora, ¿como funciona la matemática modular? pues bien los módulos son los residuos de una división por ejemplo si tenemos 8%4lease 8 modulo 4,nos daría como resultado 0 que es el residuo de la división 8/4.

Sabiendo lo anterior podemos abordar el problema, si sabemos que el total de letras son 26 sin contar la ñ y el total de números son 10, entonces los módulos para letras y números serán 26 y 10 respectivamente, identificando estas dos cosas podemos hacer las operaciones fácilmente, volvamos al cifrado de A1 y código 32.

La operación dentro del código quedaría para la letra A 32%26 = 6(este es el residuo de la división 32/26) y como nos da 6 pues simplemente desplazamos 6 posiciones a la letra A, y se hace exactamente igual para el numero 1 solo que con modulo 10. Y se acabo.

Bueno no quiero explicar mucho a detalle el código ya que es bastante simple y lo pueden ver en los archivos que les adjunto.

CifradoCesar1.java

CifradoCesar2.java (Con matemática modular)

ValidacionAlfanumerica.java

2 comentarios en “Cifrado Cesar. Algoritmo en Java

    • nooo? bueno a mi se me funciono como haces para decifrar? ..
      yo lo que hago es que si cifro con un código de 15 por ejemplo la palabra
      genitalico con código 15 daria = vtcxipaxrd y para revertir eso .. hago 26 letras menos 15 código de cifrado nos daría 11 que seria para descifrar
      entonces la palabra vtcxipaxrd con código 11 = genitalico

      un saludo🙂

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s