Valor de la contraseña de Python md5

Tengo este formulario de solicitud de cambio de contraseña. En el cual el usuario ingresa sus contraseñas antiguas.

esta vieja contraseña es el formato md5.

Cómo comparar el valor md5 de db a la contraseña anterior ingresada por el usuario

import md5 oldpasswd_byuser=str("tom") oldpasswd_db="sha1$c60da$1835a9c3ccb1cc436ccaa577679b5d0321234c6f" opw= md5.new(oldpasswd_byuser) #opw= md5.new(oldpasswd_byuser).hexdigest() if(opw == oldpasswd_db): print "same password" else: print "Invalid password" 

el hash que has puesto allí es un hexdigest sha1 con sal, ya que django (y probablemente muchos otros) lo almacena de forma predeterminada.

el código para verificarlo está en contrib / auth / models.py . Desde allí puede ver que django funciona con md5 por defecto. Todo lo que tienes que hacer es actualizar los hashes antiguos al siguiente formulario:

 md5$$ 

Si sus hash no tienen sal, deje la sal en blanco ( md5$$ ), pero actualice el hash a sha1 la próxima vez que el usuario realice un inicio de sesión válido.

No creo que oldpasswd_db sea ​​un MD5. Más bien parece una combinación de método hash (SHA1 en este caso), un salt y el hash de contraseña en sí.

Intente concatenar el valor de sal con la contraseña:

 import hashlib hashlib.sha1('c60datom').hexdigest() 

No es md5, es sha1 – "sha1$xxx .

Tendrías que usar las funciones sha1 en su lugar. Hay una documentación sobre esto en http://docs.python.org/library/sha.html

Para comparar el valor de su contraseña actual con la contraseña almacenada en la base de datos, puede hacerlo:

 import md5 input_password = request.POST['password'] md5_hashed_input_password = md5.new(input_password).hexdigest() #comapre the value to that stored in db if md5_hashed_input_password == db_password: #password in db should be stored in md5 hash format print 'password match' else: print 'password mismatch'