Buenas, otra solución a un reto de udtools : [Enlace externo eliminado para invitados]

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 :
Imagen
Responder

Volver a “Fuentes”