Programación Web y Scripting > Python

 Ya Lo Terminé Por Fin

(1/1)

edurne:
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:
Podrias utilizar el metodo hexdigest() del siguiente modo.


--- Código: Text ---import md5 m = md5.new()m.update (&#34;texto&#34;)x = m.hexdigest()print x  
Salida

--- Citar ---62059a74e9330e9dc2f537f712b8797c
--- Fin de la cita ---

Espero te sirva.

Saludos

edurne:
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!!

Navegación

[0] Índice de Mensajes

Ir a la versión completa