2010-12-13 24 views
5

Tengo la entrada de la base de datos para la contraseña en formato md5, pero cuando el usuario usa la "Contraseña olvidada", ¿cómo le puedo dar la contraseña deseada?Tengo una contraseña encriptada con md5, ¿cómo darle la contraseña al usuario cuando usa "Olvidé mi contraseña"?

+1

Oblig. nitpick: la función MD5 es * hash * - se pierde información del resultado, los datos originales no son recuperables. Con * encryption * OTOH, los datos originales pueden recuperarse completamente con la clave correcta. – Piskvor

+0

posible duplicado de [¿Es posible descifrar los hashes md5?] (Http://stackoverflow.com/questions/1240852/is-it-possible-to-decrypt-md5-hashes) –

Respuesta

12

No puede hacer eso desde un hash MD5; ni deberías ser capaz de hacerlo. La recuperación de contraseña debe ser intratable.

El proceso habitual es enviar un token de restablecimiento de contraseña (URL) a su dirección de correo electrónico para que el usuario pueda elegir una nueva contraseña.

+0

gracias @Marcelo Cantos –

2

No puede hacerlo sin poner la contraseña en la base de datos, lo cual es indeseable, pero puede generarle una nueva contraseña y enviársela. O un enlace donde pueden restablecer su contraseña.

1

Tiene una probabilidad 1/100 de recuperar esa contraseña (método del diccionario) dada la longitud de la contraseña. No lo recomendaré.

Es mejor generar una nueva contraseña aleatoria y enviarla al correo electrónico del usuario.

+0

Mucho menos que 1/100, en realidad, ese es todo el sentido del hash: simple y rápido en una dirección (datos a hash), complicado y muy lento (como en "casi imposible cuando se hace bien") en la otra dirección (hash a datos). – Piskvor

+0

@Piskvor en realidad esa es solo mi opinión. : P dependería del diccionario utilizado. – Ruel

+0

Si obtiene una tasa de recuperación de 1/100. Tienes un sistema terriblemente inseguro. De hecho, puede probar su propio sistema para las tasas de recuperación usando los diversos codificadores/decodificadores md5 que existen. Dispara a 0% de recuperación. http://www.md5decrypter.com/ – DampeS8N

2

tiene que enviar un new password al usuario y luego configurarlo en la base de datos también. de lo contrario, es posible que la contraseña original no se recupere.

Gracias.

3

No se puede - MD5 es simplemente un hash "de una sola dirección", no un medio de encriptar datos que posteriormente pueden descifrar.

Como tal, la idea general es:

  1. enviar al usuario un correo electrónico a su dirección registrada con un enlace de restablecimiento en ella. (Para demostrar que poseen la dirección). El enlace de reinicio debe contener un hash basado en algún aspecto de sus datos específicos de usuario para que no pueda adivinarse fácilmente, etc. (p. Ej .: tiempo de creación de cuenta)

  2. Cuando el usuario hace clic en el enlace que aterriza en una página de restablecimiento de contraseña que comprueba el hash anterior, genera una nueva contraseña (idealmente una combinación de caracteres superiores/inferiores y algunos numéricos, aunque siempre tiendo a omitir caracteres como '0', ' o ',' O ', etc. en aras de la claridad) y luego envía al usuario la nueva contraseña en un correo electrónico, informándoles que deben cambiar esta contraseña lo antes posible.

, el usuario puede iniciar sesión y acceder al sitio como de costumbre.

+0

Me saltaría el segundo correo electrónico enviando una nueva contraseña. Permita que el usuario cambie la contraseña directamente desde ese enlace. – Danosaure

Cuestiones relacionadas