comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Cifrado progresivo

  • 5 Respuestas
  • 2083 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
« en: Febrero 05, 2014, 07:14:44 pm »
Traduje este cifrado que hizo Metal:

Código: Python
  1. def progresivo(s, n, o):
  2.     encoded = [ord(s[0]) + n,]
  3.     decoded = [ord(s[0]) - n,]
  4.      
  5.     if o == 1:
  6.         for i in s[1::]:
  7.             encoded.append(ord(i) + encoded[-1])
  8.          
  9.         print "".join([unichr(x) for x in encoded])
  10.      
  11.     elif o == 0:
  12.         for i in s[1::]:
  13.             decoded.append(ord(i) - decoded[-1])
  14.              
  15.         print "".join([unichr(x) for x in decoded])
  16.  
  17. #Params: s = Texto a cifrar o descifrar | n = key | o = 1 -> cifrar, o = 0 -> descifrar
  18. #progresivo('sanko', 2, 1) -> output example uÖńƯȞ
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #1 en: Febrero 05, 2014, 07:24:24 pm »
Nosé si la sintaxis esta bien pero así se resume a la mitad:

Código: Python
  1. def progresivo(s, n, o):
  2.     encoded = [ord(s[0]) + n,]
  3.     decoded = [ord(s[0]) - n,]
  4.      
  5.     for i in s[1::]:
  6.         if o == 1:        
  7.             encoded.append(ord(i) + encoded[-1])
  8.         elif o == 0:
  9.             decoded.append(ord(i) - decoded[-1])    
  10.  
  11.     print "".join([unichr(x) for x in encoded]) if (o ==1)
  12.     print "".join([unichr(x) for x in decoded]) if (o ==0)
  13.  
« Última modificación: Febrero 06, 2014, 03:49:36 pm por Juan »

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5401
  • Actividad:
    38.33%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« Respuesta #2 en: Febrero 05, 2014, 08:56:40 pm »
Excelente trabajo por parte de los dos! se ven excelente los codes!
Felicitaciones!


Desconectado Sanko

  • *
  • Underc0der
  • Mensajes: 541
  • Actividad:
    0%
  • Reputación 0
  • ¿Puedes?
    • Ver Perfil
    • Underc0de
« Respuesta #3 en: Febrero 06, 2014, 11:01:50 am »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Nosé si la sintaxis esta bien pero así se resume a la mitad:

Código: Python
  1. def progresivo(s, n, o):
  2.     encoded = [ord(s[0]) + n,]
  3.     decoded = [ord(s[0]) - n,]
  4.      
  5.     for i in s[1::]:
  6.         if o == 1:        
  7.             encoded.append(ord(i) + encoded[-1])
  8.         elif o == 0:
  9.             decoded.append(ord(i) - decoded[-1])    
  10.  
  11.     print "".join([unichr(x) for x in encoded])
No bro, tu code esta erroneo, de esta manera solo podrias cifrar.
PD: Hablamos de E/S
Saludos
« Última modificación: Febrero 06, 2014, 11:43:36 am por Sanko »
Sigueme en Twitter : @Sankosk
Estos nuevos staff no tienen puta idea XD

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #4 en: Febrero 06, 2014, 03:50:22 pm »
Haber si funciona con lo que he editado, esque es una tontería hacer dos for para un proceso y su inversa ademas salen mas lineas...
« Última modificación: Febrero 06, 2014, 03:52:04 pm por Juan »

Desconectado overxfl0w13

  • *
  • Underc0der
  • Mensajes: 26
  • Actividad:
    0%
  • Reputación 0
  • Hola1
    • Ver Perfil
  • Skype: overxfl0w13
« Respuesta #5 en: Febrero 06, 2014, 06:10:31 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
Haber si funciona con lo que he editado, esque es una tontería hacer dos for para un proceso y su inversa ademas salen mas lineas...

Tu código era correcto, lo único que no imprimías el resultado en caso de descifrado, pero idéntico a nivel semántico.

El otro código no hace 2 for para un proceso y su inversa, simplemente multiplexa con un condicional la función a realizar y solo se ejecuta uno de los bucles. Muchas veces, una linea o 2 más no importa, incluso puede ayudar a mejorar la eficiencia, aunque no es mucho mira:

Juan:   0.000392249999046s
Sanko: 0.000362740001678s

Además por mi parte veo más lógico saber si primero se va a cifrar o descifrar y luego aplicar la función y no en el mismo bucle de la función realizar n comparaciones siendo n la longitud de la cadena a cifrar (tú estás comprobando por cada caracter si va a ser cifrado o descifrado cada vez que se itera sobre él, esto no es necesario y sobrarían n-1 condicionales ya que el primer resultado es idéntico a los obtenidos después)

En resumidas cuentas, el código de sanko hace 1 condicional y 1 bucle, mientras que el tuyo hace 1 bucle con  n condicionales.

Un saludo manes :)

 

¿Te gustó el post? COMPARTILO!



Cifrado julio cesar

Iniciado por blozzter

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

Iniciado por Once

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

Iniciado por Azav

Respuestas: 8
Vistas: 1845
Último mensaje Enero 30, 2015, 04:00:56 am
por Once
Cifrado Morse

Iniciado por Sanko

Respuestas: 6
Vistas: 3287
Último mensaje Septiembre 08, 2013, 12:55:17 am
por arthusu
Cifrado solitario

Iniciado por Sanko

Respuestas: 0
Vistas: 1189
Último mensaje Febrero 13, 2014, 12:48:47 pm
por Sanko