Siguiendo con una actividad que realizamos hace unas semanas (https://www.europeanvalley.es/noticias/cifrar-mensajes-en-clase/), donde con alumnos de 6º de primaria trabajamos en matemáticas la encriptación  de mensajes, me decidí ha seguir trabajando con esta actividad de una forma escalar.

Con mis alumnos de programación, los cuales estamos trabajando Python les planteé el siguiente reto:

“Poder crear su propia máquina Enigma basada en el método de encriptación Cesar”

Para la introducción de la teoría simplemente me apoyé en mi articulo de “Criptografía en Clase”, donde explico en que consiste este método y como se usa.

La manera de trabajar esta actividad es por equipos de 3 o 4 alumnos, ya que la programación es un poco compleja y más productivo trabajarlo en cooperativo, además el objetivo de la actividad es crear varias máquinas enigmas en clase y que se pueda cifrar y descifrar los mismos mensajes en diferentes máquinas, es decir, en diferentes códigos.

Para facilitaros esta actividad y que la podáis realizar en clase os dejo por un lado el Diagrama de Flujo de la función  CIFRAR, de la cual, de una manera simple se puede sacar la de DESCIFRAR.

Por otro lado os dejo el código integro del programa realizado en Python.

#Funcion de cifrar donde necesita dos valores
def cifrar(texto,clave):
  longitud=len(texto); #Calculamos la longitud del texto para recorrerlo
  for i in range (0,longitud): #Bucle para recorrer el texto
    for pos in range (0,26): #Bucle para recorrer el Abecedario
      if texto[i]==abc[pos]: #comparo las letras una por una
        pos_abc=pos+int(clave) #Me desplazo en el abecedario en función a la clave
        if pos_abc <26:
           print(abc[pos_abc],end=»»)
        if pos_abc >25 : #En el caso de que me pase del abecedario, calculo el modulo
           print(abc[pos_abc%26],end=»»)
    else:
      print(end=» «)
  return
 
#Funcion de descifrar donde necesita dos valores
def descifrar(texto,clave):
  longitud=len(texto);
  for i in range (0,longitud):
    for pos in range (0,26):
      if texto[i]==abc[pos]:
        pos_abc=pos-(int(clave))
        if pos_abc >-1:
           print(abc[pos_abc],end=»»)
        if pos_abc <0 :
           print(abc[pos_abc%26],end=»»)
    else:
      print(end=» «)
  return
print(«La utilidad de este programa consiste en cifrar o descifrar el texto que introduzca mediante el método César.\n—————————————————–«)
texto=input(«Dime el texto: «)
clave=input(«Dime la clave: «)
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»,» «]
print(«1.-Cifrar\n2.-Descifrar\n—————————————«)
opcion=input(«Elija una opción: «)
if opcion ==»1″:
  cifrar(texto,clave) #llamo a la función pasándole el texto y la clave de cifrado
if opcion == «2»:
  descifrar(texto,clave) #llamo a la función pasándole el texto y la clave de cifrado

También lo tenéis disponible en mi repositorio de GitHub