• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Cursos online y materiales digitales para estudiantes y desarrolladores web

  • CURSOS
  • BLOG
  • QUIÉNES SOMOS
  • FAQ
  • ACCEDER
  • CONTACTO

Reto resuelto: Julio Cesar 007

Publicado el 24/06/2020 por didacticode 2 Comments

Julio César 007

Julio César 007

Criptografía

Cifrado César


La semana pasada recibimos el reto más antiguo hasta la fecha: ¡desde el mismo Imperio Romano nos escribió Julio César (que, en sus ratos libres, se dedica a la criptografía… ¡de verdad!).

Necesitaba un programa que pudiera realizar un cifrado y descifrado utilizando lo que se denomina Cifrado César pero con la particularidad que la rotación de letras podía hacerse del número (positivo o negativo) que quisiéramos. Aquí podéis ver con todo detalle el reto.

Enunciado del reto:

El reto decía:

Queridos amigos:
Soy Cayo Julio César, emperador romano; pero me podéis llamar César. Desde hace tiempo envío mis mensajes sobre estrategia militar con un método que consiste en lo siguiente: escribo una frase y luego sustituyo cada letra por la letra correspondiente tres espacios más a la derecha. Por ejemplo, ADA lo sustituiría por DGD; y EDU por HGX. Pero cuando los mensajes son largos la codificación es un rollo, y además, hacerlo siempre con un desplazamiento de 3 espacios es poco seguro. Necesito un codificador y decodificador que, a partir de un mensaje y un número de desplazamiento (positivo o negativo) me devuelva el mensaje codificado o decodificado respectivamente. Solo trabajaré con letras mayúsculas, y los símbolos, números y espacios no necesito codificarlos ni decodificarlos. ¿Podríais ayudarme?

En este caso hicimos una única solución con dos versiones de una de las funciones de cifrado:

  • En primer lugar capturamos el mensaje a cifrar/descifrar y el número de letras de rotación.
  • Por otro lado, incluímos dos botones que se encargaban de cifrar o descifrar el mensaje.
  • Indicamos cómo resolver la función de cifrado utilizando un algoritmo «clásico» y con una función flecha (reduciendo la mayor parte del código a una sola línea).
  • Y la función de descifrado fue copiar y pegar… pero cambiando el sentido de la rotación.

Pero como siempre, recordad, ¡no hay una única solución al problema; hay soluciones mejores y soluciones peores!

¿Qué aprenderás en el vídeo?

En este vídeo veremos:

  • Cómo asociar eventos a un elemento HTML y trabajar con la función asociada de manera anónima (en lugar de llamar a una función con nombre).
  • Cómo calcular la rotación para que sea menor a 26 (letras del alfabeto) independientemente de que el número sea positivo o negativo.
  • Cómo calcular las letras cifradas utilizando un bucle for y trabajando con el método indexOf sobre una cadena.
  • Cómo calcular las letras cifradas, pero esta vez utilizando el método replace sobre una función flecha.
  • Y cómo no, cómo calcular las letras descifradas utilizando el sistema anterior.

Vídeos y código fuente

¡¿A qué esperas?! ¡Echa un ojo al vídeo de la solución!

Y por supuesto, cómo no:

Código fuente de la solución

¿Tú cómo lo habrías hecho? ¡Espero tus propuestas en los comentarios!

Y si quieres compartir código, te recomiendo que utilices alguna herramienta online de testing de código como Codepen, JSFiddle, PlayCode, etc. o repositorios como GitHub, GitLab, BitBucket…

Filed Under: Ejercicio resuelto, Reto Tagged With: fechas, javascript, reto, tiempo

Reader Interactions

Comments

  1. FEDERICO MACÍAS says

    29/06/2020 at 03:56

    Muy bueno el vídeo, muchas gracias, Ada. Además, no sólo aprendimos de JavaScript sino que además aprendimos algo de historia y de criptografía,jeje.
    Excelente y como siempre muy completo.

    Responder
    • Ada Lovecode says

      29/06/2020 at 23:43

      ¡Me alegro de que te guste, Federico! Sí, la verdad es que no te imaginas que algo tan extendido tenga un origen tan lejano. ¡Pensaré otros retos del estilo! 😉

      Responder

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Footer

Didacticode

Cursos para estudiantes y docentes del mundo de la informática.
Retos: retos resueltos de programación.
Tips&Tricks: trucos y consejos.
Boleticodes: boletines de noticias.
Quiénes somos: Ada, Edu... y Laura.
Contacto¡Contacta conmigo!

Legal

Aviso legal
Política de privacidad
Cookies

Redes Sociales

Youtube
Twitter
Instagram
Facebook
Twitch
LinkedIn
Gitlab
Github

Didacticode © 2021

¡Cómo no! Este sitio también utiliza cookies para mejorar la experiencia de tu visita.

Puedes informarte más sobre qué cookies estamos utilizando o desactivarlas en los AJUSTES.

Resumen de privacidad
Didacticode

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.