• Viernes 19 de Abril de 2024, 13:20

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - damaroja

Páginas: [1]
1
Python / Re: Ahorcado Problema
« en: Lunes 23 de Mayo de 2011, 16:48 »
Te pongo una funcion hecha sobre la marcha que te puede ayudar, espero que te sirva o te de una idea

Código: Python
  1. def acierto(cadena,caracter):
  2.        aux=""         #Para crear otra cadena
  3.        i=0
  4.        while (i<=len(cadena)-1):        #Recorreremos la cadena caracter a caracter
  5.              if caracter==cadena[i]:      #Si el caracter elegido esta en la cadena...
  6.                     aux=aux+caracter       #Añadirlo a la nueva cadena aux
  7.              else:                                # sino...
  8.                     aux=aux+"X"               #Añadir una X , evidentemente
  9.        i=i+1                                      #Y vamos a la siguiente letra de la cadena, hasta que i sea igual a la longitud de la cadena
  10.        return aux                             #Para devolver la cadena modificada aux
  11.  

2
Python / Cifrado en tres pasos
« en: Viernes 20 de Mayo de 2011, 14:03 »
Hola amigos, estoy haciendo un tipo de cifrado que consta de tres pasos. el primero divide la frase a codificar en bloques de tres caracteres cada uno y realiza una permutacion asi: El primer caracter se sustituye por el tercero, el segundo por el primero y el tercero por el segundo. Por ejemplo, la cadena abc seria permutada asi: cab. Este es el codigo, por si alguien quiere revisarlo, o mejorarlo. La primera funcion codifica y la segunda decodifica.


#!/usr/bin/python

def trasposicion_caracteres(cadena):
   a0=a1=a2=""
   n=0
   aux=""
   if (len(cadena)%3)==1:
      cadena=cadena+"  "
   if (len(cadena)%3)==2:
      cadena=cadena+" "
   while (n<=len(cadena)-1):
      a0=cadena[n+1]
      a1=cadena[n+2]
      a2=cadena[n]
      aux=aux+a0+a1+a2      
      n=n+3   
   return aux


def destrasposicion_caracteres(cadena):
   a0=a1=a2=""
   n=0
   aux=""
   while (n<=len(cadena)-1):
      a0=cadena[n+2]
      a1=cadena[n]
      a2=cadena[n+1]
      aux=aux+a0+a1+a2      
      n=n+3   
   return aux

El segundo paso es la sustitucion de cada caracter por otro. Para no complicarnos, yo lo he realizado siguiendo el siguiente algoritmo: a cada caracter se le saca su codigo ASCII mediante la funcion ord() y se sustituye por otro codigo ASCII siguiendo la sencilla funcion discreta biyectiva: F(x)=255-ord(caracter). Esto significa que el caracter t, que tiene el codigo ASCII 112, seria sustituido por el caracter que corresponde al codigo ASCII 255-112=143 con la funcion chr(). E aqui el codigo de codificacion y decodificacion:
#!/usr/bin/python

def sustitucionASCII(cadena):
   i=0
   aux=""
   while (i<=len(cadena)-1):
      aux=aux+chr(255-ord(cadena))
      i=i+1
   return aux

def resustitucionASCII(cadena):
   i=0
   aux=""
   while (i<=len(cadena)-1):
      aux=aux+chr(255-ord(cadena))
      i=i+1
   return aux

Estos dos pasos, permutacion y sustitucion es la base de sistemas criptograficos com el DES y el AES, de encriptacion simétrica.
Todavia me queda el más importante paso, que es el de la difusion de los datos, que explicare edentro de poco. si veis algun fallo o algo, no dudeis en decirlo. GRACIAS

Páginas: [1]