• Lunes 18 de Noviembre de 2024, 07:48

Autor Tema:  RC4  (Leído 1467 veces)

DRiMeR

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
    • http://www.informatizados.es
RC4
« en: Martes 19 de Mayo de 2009, 10:12 »
0
He tenido que implementar el algoritmo del RC4 en python para unas prácticas. Y como ahora suelo meterme aquí más a menudo, os lo dejo por si le interesa a alguien. Aunque seguramente ya esté implementado en alguna librería jejej


Código: Text
  1. #!/usr/bin/env python
  2.  
  3. import unicodedata
  4.  
  5. def ini_caja(clave):
  6.     S = range(256)
  7.     K = range(256)
  8.     j = 0
  9.     for i in range(256):
  10.         if (j==len(clave)):
  11.             j = 0
  12.         K[i] = ord(clave[j])
  13.         j = j+1
  14.    
  15.     j = 0
  16.     for i in range(255):
  17.         j = (j+S[i]+K[i])%256
  18.         aux = S[i]
  19.         S[i] = S[j]
  20.         S[j] = aux
  21.    
  22.     return S
  23.  
  24.  
  25. def rc4(nomfich, nomdest, clave):
  26.     S = ini_caja(clave)
  27.     dest = open(nomdest, 'w')
  28.     data = open(nomfich, 'r')
  29.     data.seek(0,2)
  30.     tam = data.tell()
  31.     data.seek(0,0)
  32.     i, j = 0, 0
  33.     while(data.tell() < tam):
  34.         i = (i+1)%256
  35.         j = (j+1)%256
  36.         aux = S[i]
  37.         S[i] = S[j]
  38.         S[j] = aux
  39.         t = (S[i] + S[j])%256
  40.         O = S[t]
  41.         b = data.read(1)
  42.         w = O ^ ord(b)
  43.         dest.write(chr(w))
  44.  
  45.  


Salu2.