Cifrado de Vigenère

  • 1 Respuestas
  • 2691 Vistas

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

Desconectado Sanko

  • *
  • Underc0der
  • Mensajes: 541
  • Actividad:
    0%
  • Reputación 0
  • ¿Puedes?
    • Ver Perfil
    • Underc0de

Cifrado de Vigenère

  • en: Septiembre 09, 2013, 06:22:56 pm
Buenas, otra solución a un reto de udtools : You are not allowed to view links. Register or Login

Code :

Código: Python
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. # Cifrado Vigenere en Python - Sanko
  5. # Yi = (Xi + Zi) % 27
  6.  
  7. class cif_Vigenere():
  8.    
  9.    def __init__(self):
  10.       self.abecedario = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZ'
  11.       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")
  12.       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")
  13.      
  14.    def __encode(self, text, key):
  15.       encoded = ''
  16.       counter = 0
  17.      
  18.       text = text.upper()
  19.       key = key.upper()
  20.            
  21.       for i in range(len(text)):
  22.  
  23.          if counter > len(key) - 1:
  24.             counter = 0  
  25.          
  26.          if text[i] == ' ':
  27.             encoded += '5'.replace('5', ' ')
  28.             counter += 1
  29.            
  30.          else:
  31.             resultado = (self.abecedario.index(text[i]) + self.abecedario.index(key[counter]) + 1) % len(self.abecedario) - 1  
  32.             encoded += self.abecedario[resultado]
  33.             counter += 1
  34.            
  35.       print encoded
  36.      
  37.    
  38.    def __decode(self, enc_text, key):
  39.       decoded = ''
  40.       counter = 0
  41.      
  42.       key = key.upper()
  43.      
  44.       for i in range(len(enc_text)):
  45.          if counter > len(key) - 1:
  46.             counter = 0
  47.            
  48.          if enc_text[i] == ' ':
  49.             decoded += '5'.replace('5', ' ')
  50.             counter +=1
  51.    
  52.          else:
  53.             resultado = (self.abecedario.index(enc_text[i]) - self.abecedario.index(key[counter]) + 1) % len(self.abecedario) - 1
  54.             decoded += self.abecedario[resultado]
  55.             counter += 1
  56.            
  57.       print decoded
  58.      
  59. cif_Vigenere()
  60.  

Imágen :
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

Conectado 79137913

  • *
  • Co Admin
  • Mensajes: 692
  • Actividad:
    6.67%
  • Reputación 16
  • 4 Esquinas
  • Skype: [email protected]
    • Ver Perfil
    • Doors.Party
    • Email

Re:Cifrado de Vigenère

  • en: Septiembre 10, 2013, 10:23:26 am
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*                                                   You are not allowed to view links. Register or Login

 

Cifrado julio cesar

Iniciado por blozzter

Respuestas: 0
Vistas: 2633
Último mensaje Mayo 26, 2011, 01:53:13 am
por blozzter
Cifrado rot13 y atbash

Iniciado por Once

Respuestas: 3
Vistas: 4654
Último mensaje Abril 23, 2013, 08:47:19 pm
por k0ws
Cifrado Compresor [Archivos]

Iniciado por Azav

Respuestas: 8
Vistas: 4004
Último mensaje Enero 30, 2015, 04:00:56 am
por Once
Cifrado Cesar ... 3 Funciones

Iniciado por darkucla

Respuestas: 3
Vistas: 441
Último mensaje Enero 16, 2020, 12:42:18 am
por darkucla
Cifrado Escitala

Iniciado por Sanko

Respuestas: 0
Vistas: 2481
Último mensaje Agosto 26, 2013, 09:10:24 pm
por Sanko