Buenas, otra solución a un reto de udtools : http://foro.udtools.net/showthread.php?11264-Reto-Programaci%F3n-Sobre-Cifrado-de-Vigen%E8re&p=79093 (http://foro.udtools.net/showthread.php?11264-Reto-Programaci%F3n-Sobre-Cifrado-de-Vigen%E8re&p=79093)
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 :
(http://i.imgur.com/FxHkVu0.png)
HOLA!!!
Buen codigo Sanko! Guardado en mi biblioteca!
GRACIAS POR LEER!!!