8 comentarios

sencillo cifrado vernam en python

Este es un programita de una tarea escolar para cifrar y descifrar utilizando el metodo de vernam que consiste en aplicar la operacion XOR sobre el texto a cifrar y una llave, tambien incluye una funcion para generar una llave numerica pseudoaleatoria de la misma longitud del texto a cifrar, sencillo pero “junciona” :), python es en verdad perfecto para esta clase de tareas, me tomo mas tiempo en buscar como obtener el codigo ascii de un caracter que codificar el programa, aun puede ser mejorado pero p’a empezar esta bien 😉

# -------------------------------
# sencillo script para cifrado de vernam
# y generar llaves numericas

import random

def get_randomkey(text):

    """ genera una llave numerica pseudoaleatoria
    de la misma longitud del texto a cifrar  """

    start = '1'
    end = '9'

    for i in range(0, len(text) - 1):
        start += '0'
        end += '9'

    #print "start: ", start
    #print "end: ", end

    key = random.randint(int(start), int(end))

    return str(key)

def crypt(text, key):
    ''' cifra/descifra un texto utilizando operacion XOR'''
    new_text = ""

    for i, c in enumerate(text):
        code = ord(c)
        xor = code ^ ord(key[i])
        new_text += chr(xor)

    return new_text

if __name__ == '__main__':
    print "cifrado de vernam (XOR)"
    print "( 1 ) Cifrar"
    print "( 2 ) Descifrar"
    option = 0

    while option <> "1" and option <> "2":
        option =  raw_input("teclee una opcion valida: ")

    if option == "1":
        text = raw_input("Texto a cifrar: ")
        key = get_randomkey(text)
        text = crypt(text, key)
        print "texto cifrado: ", text
        print "clave para descifrar: ", key

    elif option == "2":
        text = raw_input("Texto a descifrar: ")
        key = raw_input("clave: ")
        text = crypt(text, key)
        print "texto descifrado: ", text

tengo un problema con el indentado, pero en cuanto lo resuelva actualizo el post 🙂

Anuncios

8 comentarios el “sencillo cifrado vernam en python

  1. A penas en estos dias habia visitado de nuevo tu blog y veia que no habia nada. Me da mucho gusto que lo retomes y empieces a escribir. 😀

  2. OORALE MAN ME SALVASTE CHIDO TU BLOG WE TRAITE LA LIRA WE PA TOCAR UNAS DE METALLICA MAN \ m /

  3. tienes un error en una lina chekalo bien por ke en mi compilador no corre

    • si, de hecho al final hago el comentario que hay un problema con el indentado, solo tienes que indentar el codigo, pero ya muchos lo usaron en algunos examenes XD, lo que pasa es que cuando lo pego al wordpress me quita el indentado.

      saluuoos

  4. Gracias por compartir tu código …

  5. Excelente me a servido de mucho para guiarme en mi sistema, gracias!

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

A %d blogueros les gusta esto: