Code :
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Cifrado Vigenere en Python - Sanko
# Yi = (Xi + Zi) % 27
class cif_Vigenere():
def __init__(self):
self.abecedario = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZ'
self.__encode("P A R I S V A U T B I E N", "L O U P L O U P L O U P L")
self.__decode("A O N X D L U L E P C T W", "L O U P L O U P L O U P L")
def __encode(self, text, key):
encoded = ''
counter = 0
text = text.upper()
key = key.upper()
for i in range(len(text)):
if counter > len(key) - 1:
counter = 0
if text[i] == ' ':
encoded += '5'.replace('5', ' ')
counter += 1
else:
resultado = (self.abecedario.index(text[i]) + self.abecedario.index(key[counter]) + 1) % len(self.abecedario) - 1
encoded += self.abecedario[resultado]
counter += 1
print encoded
def __decode(self, enc_text, key):
decoded = ''
counter = 0
key = key.upper()
for i in range(len(enc_text)):
if counter > len(key) - 1:
counter = 0
if enc_text[i] == ' ':
decoded += '5'.replace('5', ' ')
counter +=1
else:
resultado = (self.abecedario.index(enc_text[i]) - self.abecedario.index(key[counter]) + 1) % len(self.abecedario) - 1
decoded += self.abecedario[resultado]
counter += 1
print decoded
cif_Vigenere()
Imágen :