Cifrado Cesar
criptografiapython
El cifrado cesar es un método de cifrado por transposición o desplazamiento, su origen se remonta a la antigua Roma donde julio cesar, de ahí el nombre del algoritmo, lo utilizaba para hacer llegar sus órdenes a sus generales en batalla con el fin de que si el mensaje era interceptado por el enemigo este no pudiera leerlo.
El cifrado funciona desplazando las letras según el numero clave por ejemplo, la letra A se cambiaría por la D si nuestra clave fuera 3, y la B pasaría a ser E y así sucesivamente. Este método de cifrado en la actualidad no provee ningún grado de seguridad ya que es muy fácil de romper, falta observar las letras que se repiten con más frecuencia, por ejemplo en el español la letra E es la más usada por lo tanto si vemos un texto cifrado en el cual se repite muchas veces la letra J podríamos calcular la clave restando el valor de la J menos el valor de la E obteniendo así un 5 , este número seria nuestra clave para poder descifrar el mensaje.
Código para cifrar y descifrar
Ahora que hemos visto un poco de historia veamos como programar una función para cifrar y descifrar mensajes utilizando python, en la parte de abajo les dejo el código comentado.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
#!/usr/bin/env python # -*- coding: utf-8 -*- # Cadena de texto que deseamos cifrar message = 'Este es mi mensaje secreto' # La llave de cifrado o descifrado key = 13 # Le decimos al programa que queremos realizar mode = 'encrypt' # 'encrypt' o 'decrypt' # Todos los posibles simbolos LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' #Aqui se almacena el mensaje final translated = '' # Ponemos en mayúsculas el mensaje message = message.upper() # Recorremos el mensaje for symbol in message: if symbol in LETTERS: # Obtenemos el indice del simbolo num = LETTERS.find(symbol) if mode == 'encrypt': num = num + key elif mode == 'decrypt': num = num - key # si num es mayor que el largo de # LETTERS o es menor que 0 if num >= len(LETTERS): num = num - len(LETTERS) elif num < 0: num = num + len(LETTERS) # Agregamos el simbolo al mensaje final translated = translated + LETTERS[num] else: # Agregamos el simbolo translated = translated + symbol # Imprimimos el mensaje cifrado/descifrado print(translated) |
Espero que les haya gustado la entrada no olviden compartirla , en futuras entradas publicare más métodos criptográficos.
2 Comments
no entiendo como sacar la key?