El Cifrado Cesar, Locos por la Criptografia, Programación con Python
Aunque la mayoría de mis series no han terminado ni con relleno me he propuesto agregar una categoría nueva y es LOCOS POR LA CRIPTOGRAFIA! aquí hablare de algunas cosas interesantes como libros algoritmos, código y cosas que he pasado con este mundo matemáticamente enigmático.
Para comenzar voy a recomendarles muy sinceramente el maravilloso libro "Criptonomicom" que se basa en como con la ayuda de matemáticos criptoanalistas, los aliados ganaron la guerra y de como se desarrollo este gran mundo de la criptografia a través de código pasando por las aventuras de estos héroes matemáticos!
Aunque la historia se basa en la vida de varios protagonistas al final todo converge.... y llegan a ser parte de la misma historia!
Ahora les voy a comentar una de las joyas de la corona el cifrado CESAR, no mentira, no voy a entrar en mucha historia ni en mucha explicación no pretendo repetir lo que otros dicen al final encontraran enlaces de interés.
El cifrado CESAR no es mas que un cifrado por desplazamiento bastante tonto para nuestra sociedad ya que para entonces muy pocos tenían acceso a la educación o a las letras así que una palabra en texto claro era en si un cifrado.
Para resguardar los secretos militares de los romanos se origino el CIFRADO POR DESPLAZAMIENTO o CIFRADO DE CESAR!!! muy conocido por casi cualquier matematico no necesariamente criptografo en nuestra epoca!
CITA
ALGORITMO
Es un algoritmo de desplazamiento que consiste en sustituir una letra por otra que se encuentra en una posición fija, por ejemplo un desplazamiento de 3, la letra “a” seria remplazada por la “D”.
Para codificar un mensaje:
En donde:
- T: es el mensaje resultante.
- i: posición del carácter en la cadena.
- c: carácter.
- n: clave numérica para el desplazamiento.
- abc: Total de caracteries en el alfabeto(en caso de usar el alfabeto ingles son: 27).
Y para decodificar:
El codigo que se encuentra en el blog que saque la cita pero no admite los espacios por lo que agregue el caracter "_" para usarlo, el codigo es el siguiente
#!/usr/bin/env python
# -*- coding: utf-8 -*-
abc = 'abcdefghijklmnopqrstuvwxyz_'
def cifrar(cadena, clave):
text_cifrado = ''
for letra in cadena:
suma = abc.find(letra) + clave
modulo = int(suma) % len(abc)
text_cifrado = text_cifrado + str(abc[modulo])
return text_cifrado
def decifrar(cadena, clave):
text_cifrado = ''
for letra in cadena:
suma = abc.find(letra) - clave
modulo = int(suma) % len(abc)
text_cifrado = text_cifrado + str(abc[modulo])
return text_cifrado
def main():
c = str(raw_input('cadena a cifrar: ')).lower()
n = int(raw_input('clave numerica: '))
print cifrar(c,n)
cc = str(raw_input('cadena a decifrar: ')).lower()
cn = int(raw_input('clave numerica: '))
print decifrar(cc,cn)
if __name__ == '__main__':
main()
Como podemos observar al ejecutar el código nos pide la cadena luego la cantidad de desplazamientos y luego nos pide la cadena a descifrar y la cantidad de desplazamientos! esto lo podemos cambiar pero lo dejare para la siguiente entrada de la serie donde agregaremos color al código y a su ejecución!
Nos Vemos y espero les sea de ayuda! Ya se me van ocurriendo varias ideas sencillas pero que harían un cifrado bastante discreto y fuerte :D
Dios les Bendiga y llene su vida de Paz y Gozo
Enlaces de interés!
http://es.wikipedia.org/wiki/Cifrado_C%C3%A9sar
Coño!!! uno que podrá descifrar este mensaje que deje encriptado en una critica!! ;)... yo lo hice a mano, sin Python, pero gracias a este post, igual me hago una app.
https://steemit.com/spanish/@ivan-perez-anies/critica-by-uno-de-huesca-sobre-snowden