Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Pasando de MD5 a password_hash()

Estas en el tema de Pasando de MD5 a password_hash() en el foro de Mysql en Foros del Web. Hola, Tengo una base de datos con la información de mis usuarios... el campo password estaba encriptado usando el algoritmo MD5... buscando información acerca de ...
  #1 (permalink)  
Antiguo 13/07/2015, 11:35
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 23 años
Puntos: 0
Pasando de MD5 a password_hash()

Hola,

Tengo una base de datos con la información de mis usuarios... el campo password estaba encriptado usando el algoritmo MD5... buscando información acerca de vulnerabilidades decidí actualizar y comenzar a usar password_hash.
Ahora tengo un problema, los nuevos usuarios que se registran, su password está encriptado usando password_hash, pero... ¿Cómo hago para actualizar los passwords de los usuarios que ya estaban registrados en la Base de Datos?
Si lo dejo así, voy a tener la mitad de los usuarios protegidos y la otra mitad no?
Qué me recomiendan?

Saludos y gracias!!
__________________
Nuedi Servicios SA de CV
http://www.nuedi.mx
  #2 (permalink)  
Antiguo 15/07/2015, 08:23
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 23 años
Puntos: 0
Respuesta: Pasando de MD5 a password_hash()

Hola amigos, no sé si me expliqué bien... de seguro no, pues hay más de 100 visitas y ninguna respuesta.
En pocas palabras, pasé de usar MD5 a usar password_hash(), todo está bien, solo que los usuarios que se habían registrado antes de este cambio tienen en la Base de Datos un password de longitud 32 caracteres y los nuevos que se van registrando tienen 64 caracteres... por lo que mi código para el login checa si el tamaño es 32 y utiliza el viejo formato MD5 (teniendo aquí un problema de seguridad) y si tiene 64 ya uso el password_verify.
¿Alguna sugerencia? ¿Le ha sucedido a alguien?
Saludos
__________________
Nuedi Servicios SA de CV
http://www.nuedi.mx
  #3 (permalink)  
Antiguo 15/07/2015, 08:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Pasando de MD5 a password_hash()

Vamos a ver si te lo simplifico:
MD5 no es un sistema de encriptación, sino de generación unidireccional de hash, por lo que no existe forma de "pasar" de una cadena generada en MD5 a otra en cualquier otro tipo de "encriptacion".
En esencia, si quieres reprocesar las PWD de los usuarios, o les generas directamente las claves y se las notificas, o les tienes que informar que se va a cambiar el sistema, o deberán coexistir ambos durante un tiempo prudencial para que se vayan actualizando.
Por lo demás, password_hash es un tema de PHP, no de MySQL, por lo que es OFF TOIPIC en este foro, y probablemente por eso no hayan respondido.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 15/07/2015, 09:26
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 23 años
Puntos: 0
Respuesta: Pasando de MD5 a password_hash()

OK, entonces para el que tenga la misma duda, la respuesta es: "...les tienes que informar que se va a cambiar el sistema, o deberán coexistir ambos durante un tiempo prudencial para que se vayan actualizando"
Gracias!

PD: Si pregunté aquí es porque el tema es más de aquí que de allá, pues estoy hablando de guardar un password en una base de datos. Saludos!
__________________
Nuedi Servicios SA de CV
http://www.nuedi.mx
  #5 (permalink)  
Antiguo 15/07/2015, 09:46
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Pasando de MD5 a password_hash()

Cita:
Si pregunté aquí es porque el tema es más de aquí que de allá, pues estoy hablando de guardar un password en una base de datos. Saludos!
Si, pero ni la función mencionada, ni la aplicación que usas, ni tampoco el envio de las notificaciones son temas de BBDD.
En lo que refiere al dato, sigue siendo un VARCHAR, se sigue almacenando con la misma sentencia, se actualiza con la misma sentencia, y se elimina con la misma sentencia.
Si lo analizas bien, salvo que necesites extender la longitud del campo, no hay ninguna modificación necesaria en la base de datos respecto de la metología que usas actualmente, ya que la generación del MD5 y/o el password_hash() no lo haces en la base sino en PHP.

Tal vez esto te ayude a delimitar el alcance: SI no hay SQL que se reescriba, no es tema de MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 15/07/2015, 10:06
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 23 años
Puntos: 0
Respuesta: Pasando de MD5 a password_hash()

Hola, pues SÍ, HAY QUE EXTENDER LA LONGITUD DEL CAMPO, pues para soportar el algoritmo bcrypt se necesitan más de 60 caracteres (se recomiendan 255)... así que sí necesito re-escribir SQL y por lo tanto es un tema de Bases de Datos... pero bueno, eso ya es lo de menos, lo importante es que si alguien más tiene la duda, ya conoce la respuesta.
Saludos y gracias por tu tiempo!
__________________
Nuedi Servicios SA de CV
http://www.nuedi.mx
  #7 (permalink)  
Antiguo 15/07/2015, 10:21
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Pasando de MD5 a password_hash()

Cita:
Iniciado por Silver Ver Mensaje
Hola, pues SÍ, HAY QUE EXTENDER LA LONGITUD DEL CAMPO, pues para soportar el algoritmo bcrypt se necesitan más de 60 caracteres (se recomiendan 255)... así que sí necesito re-escribir SQL y por lo tanto es un tema de Bases de Datos... pero bueno, eso ya es lo de menos, lo importante es que si alguien más tiene la duda, ya conoce la respuesta.
Saludos y gracias por tu tiempo!
Como bien te han dicho no habria modificacion en la logica para almacenar los password, si antes usabas MD5 y ahora otro metodo, y quieres actualizar todos, porque no haces un update con los datos en MD5 al nuevo modo?? digo si tu tienes la fuente para hacer la conversion creo que puedes hacer lo contrario convertir de MD5 a una cadena normal y de ahi aplicar el nuevo metodo de encriptacion no?? por lo que tu logica seria la misma que has usado solo que el metodo seria diferente :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 15/07/2015, 10:40
 
Fecha de Ingreso: noviembre-2001
Ubicación: México DF
Mensajes: 128
Antigüedad: 23 años
Puntos: 0
Respuesta: Pasando de MD5 a password_hash()

Hola Libra, según tengo entendido, no hay manera de revertir el MD5 a una cadena normal, incluso aunque yo tenga la llave que se usó para encriptar.
Saludos y gracias!!
__________________
Nuedi Servicios SA de CV
http://www.nuedi.mx
  #9 (permalink)  
Antiguo 15/07/2015, 15:13
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 11 años, 3 meses
Puntos: 145
Respuesta: Pasando de MD5 a password_hash()

Cita:
Iniciado por Silver Ver Mensaje
Hola Libra, según tengo entendido, no hay manera de revertir el MD5 a una cadena normal, incluso aunque yo tenga la llave que se usó para encriptar.
Saludos y gracias!!
Sí hay maneras de descifrar el MD5, aunque es cuestión de 'suerte'.
De todas formas, como te dijo el compañero gnzsoloyo, MD5 es un hash, no una clase de encriptación.
__________________
¿Te sirvió la respuesta? Deja un +1

Etiquetas: campo, md5, pasando
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:16.