Cifrado Vigenère

El método original fue descrito por Giovan Battista Belasso en su libro de 1553 La cifra del Sig. Giovan Battista Belasso. Sin embargo, fue incorrectamente atribuido más tarde a Blaise de Vigenère, concretamente en el siglo XIX, y por ello aún se le conoce como el «cifrado Vigenère».

#!/usr/bin/python
#-*- coding: utf-8 -*-
#
abc = "abcdefghijklmnopqrstuvwxyz "

def cifrar(cadena, clave):  # FUNCION CIFRADO
    text_cifrar = ""
    i = 0
    for letra in cadena: 
        suma = abc.find(letra) + abc.find(clave[i % len(clave)])
        modulo = int(suma) % len(abc)
        text_cifrar = text_cifrar + str(abc[modulo]) 
        i = i + 1
    return text_cifrar

def descifrar(cadena, clave):  
    text_cifrar = ""
    i = 0
    for letra in cadena:
        suma = abc.find(letra) - abc.find(clave[i % len(clave)])  
        modulo = int(suma) % len(abc)
        text_cifrar = text_cifrar + str(abc[modulo])  
        i = i + 1
    return text_cifrar

def main():
    c = str(raw_input("Introduce cadena a cifrar: ")).lower()    
    clave = str(raw_input("Introduce clave: ")).lower() 
    print cifrar(c, clave)
    print

    c = str(raw_input("Introduce cadena a descifrar: ")).lower() 
    clave = str(raw_input("Introduce clave: ")).lower()
    print descifrar(c, clave) 
    print

if __name__ == "__main__":
    main()

El resultado sería el siguiente:

Introduce cadena a cifrar: cifrado de giovan battista belasso
Introduce clave: python
rfyyoqcxwlntxlnhamqyl wehysisyppkv

Introduce cadena a descifrar: rfyyoqcxwlntxlnhamqyl wehysisyppkv
Introduce clave: python
cifrado de giovan battista belasso

Tabla de Vigenère

Deja un comentario