Cómo descifrar una contraseña para la recuperación con php [duplicado]

1

Tengo un sitio web en el que las personas pueden registrarse e iniciar sesión en. Me gustaría implementar un sistema de recuperación de contraseña que le envíe la contraseña desencriptada. Cuando el usuario se registra, la contraseña se salea con el nombre de usuario único del usuario, se salpica con una clave secreta y se rellena con SHA256.

¿Hay alguna manera de que pueda hacer esto si conozco la clave secreta, el nombre de usuario de los usuarios, el resultado de hash y el método de cifrado?

    
pregunta DMVerfurth 23.04.2018 - 03:26
fuente

3 respuestas

8

Nos estás preguntando cuál es la mejor manera de dispararte en el pie. Como dice Peter Harmann , no hay absolutamente ninguna razón legítima para recuperar la contraseña descifrando y enviando correos electrónicos. Si puedes descifrar las contraseñas, un atacante podría hacer lo mismo. ¡Todo el punto del hashing de contraseña es evitar eso! Además, el correo electrónico no es un medio muy seguro, por lo que no es una buena práctica desperdiciar las bandejas de entrada de las personas con contraseñas.

Entonces, ¿qué hacer en su lugar? La forma tradicional de recuperar la contraseña es enviar por correo electrónico un enlace para restablecer la contraseña al usuario. El enlace contiene un token largo, seguro y aleatorio, conectado al usuario. Este token permite a la persona que hace clic en el enlace cambiar la contraseña una vez. Tenga en cuenta que el token debe caducar dentro de un tiempo razonable. Si desea obtener más información, Troy Hunt tiene un buen artículo en él.

Mientras lo hace, hay algunas cosas importantes que debe hacer para mejorar el hashing de su contraseña:

  • Lo más importante, y este es un acuerdo importante, no use una sola ronda de SHA-256. Esto no es lo suficientemente bueno. Necesitas usar un algoritmo lento, como bcrypt o similar. Consulte esta pregunta .
  • Es mejor usar un salt al azar que usar el nombre de usuario. Esto no es tan importante como el punto anterior, pero sigue siendo una buena práctica.
respondido por el Anders 23.04.2018 - 09:39
fuente
3

Hash por definición es unidireccional. No es cifrado y, por lo tanto, NO puede ser descifrado. Esto es por diseño y usted debe NUNCA enviar la contraseña de usuario por correo. Simplemente no Cualquiera que sea la razón que creas que tienes, no es lo suficientemente bueno. Si la contraseña se puede eliminar de hash, significa que su sistema no funciona.

    
respondido por el Peter Harmann 23.04.2018 - 08:19
fuente
0

Seguro que puedes intentar romper los hashes. Este es un proceso lento e ineficiente si no tiene el hardware para ello y no hay ninguna garantía de que tenga éxito. Como otros usuarios ya han mencionado, si la contraseña es descifrable, entonces el sistema está roto. Lo que recomendaría hacer es generar una nueva contraseña y ENTONCES enviarla por correo electrónico al usuario, pero son solo mis dos centavos.

    
respondido por el Vilius Povilaika 23.04.2018 - 11:13
fuente

Lea otras preguntas en las etiquetas