• Domingo 22 de Diciembre de 2024, 07:23

Autor Tema:  Ya Lo Terminé Por Fin  (Leído 2329 veces)

edurne

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Ya Lo Terminé Por Fin
« en: Lunes 28 de Febrero de 2005, 09:19 »
0
Holaaa!! ya conseguí hacer mi servidor como deseaba. He utilizado el protocolo md5 y aunque sé que no se pueden transformar los mensajes de md5 para que sean entendibles (claramente ese es el fin del encriptamiento....) me gustaría visualizar la cadena de md5 en hexadecimal. Lo he intentado con infinidad de instrucciones, pero no tengo claro si al transformar una cadena a md5, lo que resulta es otro string, porque parece que las instrucciones para un string no valen en este caso.
Esto es lo que tengo:


      value=md5.new(challenge[1:2]+contrasena+challenge[5:11]).digest()
      print 'value resultado de aplicar el md5 a la response:', value
      for c in range (0,len(value)-1):
         print '%02X' % int(value[c])

pero me da el siguiente error:

value resultado de aplicar el md5 a la response: `¤ÞDãÕxÊò×þþ!M
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "cliente.py", line 64, in ?
    crear_response()
  File "cliente.py", line 53, in crear_response
    print '%02X' % int(value[c])
ValueError: invalid literal for int():


Y si en lugar de eso, pongo simplemente:

 value=md5.new(challenge[1:2]+contrasena+challenge[5:11]).digest()
      print 'value resultado de aplicar el md5 a la response:', value
           string.atoi(value, 2)


el error es el siguiente:
value resultado de aplicar el md5 a la response: `¨ëjanyÂÔ4#t~¸·9
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "cliente.py", line 63, in ?
    crear_response()
  File "cliente.py", line 52, in crear_response
    string.atoi(value, 2)
  File "/usr/lib/python2.1/string.py", line 214, in atoi
    return _int(s, base)
ValueError: invalid literal for int(): `¨ëjanyÂÔ4#t~¸·9

Si alguien me puede ayudar se lo agradecería, qué tipo de resultado da el md5.new('').digest()?? cómo puedo cambiarlo a hexadecimal si es que se puede para visualizar esos caracteres de forma legible??

NRM

  • Miembro MUY activo
  • ***
  • Mensajes: 279
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.narrowmind.com.ar
Re: Ya Lo Terminé Por Fin
« Respuesta #1 en: Lunes 28 de Febrero de 2005, 19:06 »
0
Podrias utilizar el metodo hexdigest() del siguiente modo.

Código: Text
  1. import md5
  2.  
  3. m = md5.new()
  4. m.update (&#34;texto&#34;)
  5. x = m.hexdigest()
  6. print x
  7.  
  8.  

Salida
Citar
62059a74e9330e9dc2f537f712b8797c

Espero te sirva.

Saludos

edurne

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
Re: Ya Lo Terminé Por Fin
« Respuesta #2 en: Martes 1 de Marzo de 2005, 12:53 »
0
Muchas gracias, al final había optado por convertir primero cada cadena a int, luego cada int a hexadecimal y luego elemininar los dos primero caracteres de cada string hexadecimal y juntarlos en una nueva cadena.
Pero así es todo mucho más sencillo. Me ha sido de gran ayuda!!