Underc0de - La Casa de los Informáticos

Programación Scripting => Python => Mensaje iniciado por: Sanko en Septiembre 09, 2013, 06:22:56 PM

Título: Cifrado de Vigenère
Publicado por: Sanko en Septiembre 09, 2013, 06:22:56 PM
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 :

Código (python) [Seleccionar]
#!/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)
Título: Re:Cifrado de Vigenère
Publicado por: 79137913 en Septiembre 10, 2013, 10:23:26 AM
HOLA!!!

Buen codigo Sanko! Guardado en mi biblioteca!

GRACIAS POR LEER!!!