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

[Py3] - Algoritmo para Des/Codificar

  • 3 Respuestas
  • 515 Vistas

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

Conectado noxonsoftwares

  • *
  • Underc0der
  • Mensajes: 296
  • Actividad:
    8.33%
  • Reputación 6
  • Ayudar es Crecer, Crecer es Mejorar
    • Ver Perfil
    • NOXONSOFTWARES
  • Skype: noxonsoftwares
« en: Agosto 08, 2019, 11:33:18 am »
Hola a todos.

Bueno tenia un tiempo libre y pues a raíz de que un usuario había "echo un nuevo método de codificación (encriptación)" se me ocurrió hacer uno, pero como no soy tan bueno programando (como para inventar una operación matemática furtiva para la encriptación) me las ingenie y salio el siguiente resultado:

Me base en la tabla ASCII pero intentar encriptar algo con eso es súper fácil. Así que intente hacer que sea un poco mas difícil poder entender el texto cifrado.




Ahora el Script

Código: [Seleccionar]
import random

def cifra(mensaje):
mensaje = mensaje
for code in mensaje:
codigo = ord(code)
for i in code:
while(True):
a = random.randrange(0,255)
b = random.randrange(0,255)
c = a * b
if(c == codigo):
print(a,b, end="z")
break

Lo que hace el script que cifra el texto es obtener el código (ascii) del carácter y mediante la función random obtener números aleatorios uno A y otro B que al multiplicarlos de el codigo de dicho caracter. Una vez que lo consigue lo imprime en pantalla (el caracter z es solo para darle mas estilo  ::) :o )



Estadisticas y defecto del script
[/b]



El único defecto que podría mencionar es el consumo excesivo de memoria (todo gracias a la función random. Algo que podría decirse que tiene a favor es que por mas que sea el mismo texto a cifrar el resultado seria diferente ya que la función random se encargaría de encontrar diferentes múltiplos para el código del carácter.



Estadisticas del documento (texto a cifrar)







Consumo de memoria







Tiempo de ejecución del script






Metodo para conseguir el texto original

Código: [Seleccionar]
def descifra(mensaje):
mensaje = mensaje
lista = []
for i in mensaje.split('z'):
for x in i.split(' '):
lista.append(x)
it = iter(lista)
for x, y in zip(it, it):
print(chr(int(x) * int(y)), end='')


Eso es todo en esta oportunidad, espero sea de utilidad (no se si servirá), que sirva para aprender algo nuevo a quienes inician y pues no se que mas decir. Saludos

PD_ espero poder mejorarlo en algún tiempo que tenga libre.
« Última modificación: Agosto 08, 2019, 11:39:13 am por noxonsoftwares »

Conectado DtxdF

  • *
  • Moderador
  • Mensajes: 378
  • Actividad:
    36.67%
  • Reputación 8
  • Eres un auto y tienes dos opciones: Parar o Seguir
    • Ver Perfil
    • Mi repositorio de Github donde encontraras herramientas para tu trabajo.
« Respuesta #1 en: Agosto 09, 2019, 07:33:59 pm »
@noxonsoftwares

Hola!, muy buen aporte, no lo he probado, cuando tenga un tiempo de lo más pequeño sin duda lo hago.

Te Felicito  ;D ...

- DtxdF
Los seres humanos son robots, cuyo combustible es el afanado dinero.

Conectado noxonsoftwares

  • *
  • Underc0der
  • Mensajes: 296
  • Actividad:
    8.33%
  • Reputación 6
  • Ayudar es Crecer, Crecer es Mejorar
    • Ver Perfil
    • NOXONSOFTWARES
  • Skype: noxonsoftwares
« Respuesta #2 en: Agosto 09, 2019, 10:02:20 pm »
@DtxdF

Gracias. Espero te sea de alguna utilidad jejejeje.

Saludos

Conectado tr0n

  • *
  • Underc0der
  • Mensajes: 44
  • Actividad:
    26.67%
  • Reputación 1
    • Ver Perfil
    • Email
« Respuesta #3 en: Agosto 10, 2019, 08:06:56 pm »
Hola @noxonsoftwares, gran aporte

En el primer script donde se realiza el cifrado, se podría generar los números aleatorios no de 0 a 255, si no de 1 a la variable codigo
Código: [Seleccionar]
...
while(True):
 a = random.randrange(1,codigo)
 b = random.randrange(1,codigo)
 c = a * b
 if(c == codigo):
   print(a,b, end="z")
   break
...

Esta forma es un poco más eficiente. Digamos que queremos cifrar el caracter '0' (48), antes, si el randrage estaba de 0 a 255, las variables a y b pudieron haber obtenido valores mayores a 48 y no habría forma de que c obtuviera el número 48.

Por otro lado, si el randrange empieza desde 0, queda la posibilidad de que se obtenga un 0 en alguna de las variables a y b, con lo cual nunca se puede obtener c.

Creo que aún se puede mejorar más. El while se puede remover si se descompone la variable codigo en todos sus posibles múltiplos y se selecciona aleatoriamente la pareja a y b.

Saludos ...

 

¿Te gustó el post? COMPARTILO!



DoHC2: aprovechado para comando y control a través de DNS a través de HTTPS

Iniciado por CyberSec777

Respuestas: 0
Vistas: 2240
Último mensaje Febrero 24, 2019, 05:39:27 pm
por CyberSec777
Como crear un ejecutable [.exe] de Python para poderlo ejecutar en Windows

Iniciado por [Z]tuX

Respuestas: 2
Vistas: 7057
Último mensaje Mayo 28, 2011, 12:18:29 pm
por Gh0st.C
[Python] Mini clase para enviar datos POST - JaAViEr

Iniciado por JaAViEr

Respuestas: 0
Vistas: 2770
Último mensaje Diciembre 08, 2011, 05:24:26 am
por JaAViEr
script en python para envio de mail con cuenta en gmail

Iniciado por StepClose

Respuestas: 3
Vistas: 4198
Último mensaje Junio 12, 2018, 03:09:03 am
por master_bin
[VIDEOTUTORIAL] UAlicante - Curso Python para científicos e ingenieros

Iniciado por graphixx

Respuestas: 1
Vistas: 2901
Último mensaje Junio 25, 2016, 06:41:33 am
por OLM