Nueva Categoria!!! Locos por la Criptografia!!!


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! aqui hablare de algunas cosas interesantes como libros algoritmos, código y cosas que he pasado con este mundo matematicamente enigmatico 😀

Para comenzar voy a recomendarles muy sinceramente el maravilloso libro “Criptonomicom” que se basa en como con la ayuda de matematicos 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”.

800px-Caesar3.svg

Para codificar un mensaje:

T_i(c) = (c + n) \bmod abc

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:

T_i(c) = (c - n) \bmod abc

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 😀

Enlaces de interés!

http://es.wikipedia.org/wiki/Cifrado_C%C3%A9sar

http://www.antpoint.com/dev/cifrado-cesar-en-python/

https://github.com/anymex/test-python/blob/master/cesar.py

Anuncios

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