Cifrado de Vigenère

Iniciado por Sanko, Septiembre 09, 2013, 06:22:56 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Buenas, otra solución a un reto de udtools : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Code :

Código: python
#!/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 :
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

HOLA!!!

Buen codigo Sanko! Guardado en mi biblioteca!

GRACIAS POR LEER!!!
"Algunos creen que soy un bot, puede que tengan razon"
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

*Shadow Scouts Team*                                                No tienes permitido ver los links. Registrarse o Entrar a mi cuenta