Foros del Web » Programando para Internet » PHP »

Verificar contraseña hash

Estas en el tema de Verificar contraseña hash en el foro de PHP en Foros del Web. Hola a todos, en mi base de datos tengo almacenada una contraseña con hash, ahora quiero loguearme de nuevo y me sale error, o siempre ...
  #1 (permalink)  
Antiguo 06/01/2019, 23:12
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 810
Antigüedad: 11 años, 5 meses
Puntos: 7
Pregunta Verificar contraseña hash

Hola a todos, en mi base de datos tengo almacenada una contraseña con hash, ahora quiero loguearme de nuevo y me sale error, o siempre es la contraseña correcta..

dejo el código porque he intentado muchas maneras y no me sale, todo lo que busco es orientado a objeto y no entiendo ese tema... ---

alguien me echa una mano?..
el codigo:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $email=$_POST['email'];
  4. $pass=$_POST['pass'];
  5.  
  6.  
  7.  
  8.  
  9. include("conect/conectando.php");
  10. $cone=conectar();
  11.  
  12.    
  13. $res = mysqli_query($cone,"SELECT * FROM adusuarios WHERE correo_ad='$email'");
  14. while($fila = mysqli_fetch_assoc($res)){
  15.  
  16.          
  17.         echo    $correo_ad=$fila['correo_ad']."<br>";
  18.         $hash=  $pass_ad=$fila['pass_ad'];
  19.        
  20.     if (password_verify('pass_ad', $hash)) {
  21.         echo '¡La contraseña es válida!';
  22.     } else {
  23.         echo 'La contraseña no es válida.';
  24.     }
  25. }
  26.     ?>

Gracias por sus tiempo, saludos.!!!
  #2 (permalink)  
Antiguo 06/01/2019, 23:42
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.435
Antigüedad: 3 años, 6 meses
Puntos: 262
Respuesta: Verificar contraseña hash

Intenta de esta manera:

Código PHP:
Ver original
  1. include("conect/conectando.php");
  2.     $cone=conectar();
  3.    
  4.     $email=$_POST['email'];
  5.     $pass=$_POST['pass'];
  6.        
  7.    
  8.     $res = mysqli_query($cone,"SELECT * FROM adusuarios WHERE correo_ad='$email'");
  9.  
  10.     if(mysqli_num_rows($res)==1){
  11.         $row = mysqli_fech_assoc($res);
  12.         if(password_verify($pass, $row['pass_ad'])){
  13.             echo "Contraseña Válida";
  14.         }else{
  15.             echo "Error en Datos";
  16.         }
  17.     }else{
  18.         echo "Error en datos";
  19.     }
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 07/01/2019, 21:53
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 810
Antigüedad: 11 años, 5 meses
Puntos: 7
Respuesta: Verificar contraseña hash

Hola!, Gracias por tu repuesta.! lo voy a probar , al cambiar la entrada de usuario tengo que cambiar todo para poder probarlo bien.

Se agradece tu tiempo, y ganas de ayudar.!!

Por las dudas al que lea el código dejado por XFXSTUDIOS al que agradezco,

mysqli_fetch_assoc



Saludos Cordiales
  #4 (permalink)  
Antiguo 07/01/2019, 22:04
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 810
Antigüedad: 11 años, 5 meses
Puntos: 7
Pregunta Respuesta: Verificar contraseña hash

Hola nuevamente, hice tu código y me sale "Error en datos", estaré convirtiendo mal la contraseña?,
por ejemplo; escribo

1234 y se convierte en esto:
$2y$10$gcvTJnp8Kz2kotZXU8dwT.X3GAsHbRLm4P/N7OnK7h9anR1lmfpma

y lo hago de esta manera, recivo la variable y la convierto asi:

Código PHP:
Ver original
  1. $pass_1=password_hash("pass_ad", PASSWORD_DEFAULT);

es lo que saque del manual de PHP,

Gracias de nuevo!
Saludos Cordiales
  #5 (permalink)  
Antiguo 08/01/2019, 09:22
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.435
Antigüedad: 3 años, 6 meses
Puntos: 262
Respuesta: Verificar contraseña hash

De casualidad te diste cuenta que no hasheo la clave que llega del formulario?, lo digo porque si lo haces antes los patrones no van a coincidir, ve que le paso al password_verify la clave del formulario tal y como llega y el hash contenido en la base de datos
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 08/01/2019, 13:30
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 810
Antigüedad: 11 años, 5 meses
Puntos: 7
Pregunta Respuesta: Verificar contraseña hash

Hola!, perdon pero no entiendo mucho,,, claro hay me di cuenta que comparo por ejemplo 123, con un hash .... entonces no tiene nada que ver.. . Seria asi?..

tengo que convertir el 1234 a hash y compararlo en la base de datos?,

hice lo siguiente y no funciona.. me he quedado sin material...

Código PHP:
Ver original
  1. $email=$_POST['email'];
  2. $pass=$_POST['pass'];
  3.  
  4.  
  5. include("conect/conectando.php");
  6. $cone=conectar();
  7.  
  8. $pass=password_hash("pass", PASSWORD_DEFAULT);
  9.  
  10. $res = mysqli_query($cone,"SELECT * FROM adusuarios WHERE correo_ad='$email'");
  11.  
  12. echo $pass."<br>";
  13.  
  14.  
  15.  
  16.  
  17. if(mysqli_num_rows($res)==1){
  18.     $row = mysqli_fetch_assoc($res);
  19.     if(password_verify($pass, $row['pass_ad'])){
  20.         echo "Contraseña Válida";
  21.     }else{
  22.         echo "Error en Datos";
  23.     }
  24. }else{
  25.     echo "Error en datos";
  26. }
  27.  
  28.  
  29.    
  30.  ?>

y por ultimo, estuve haciendo pruebas y si pongo 1234, la convierto en hash, y lo vuelvo hacer con el mismo numero el hash cambia.. entonces jamas van a coincidir.. osea se que si por que lo veo siempre en los ejemplos de php orientado a objeto, pero en mi lógica común no se me ocurre mucho...

Gracias!
Saludos Cordiales
  #7 (permalink)  
Antiguo 08/01/2019, 16:27
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.435
Antigüedad: 3 años, 6 meses
Puntos: 262
Respuesta: Verificar contraseña hash

Solo pasale la contraseña directamente que viene por post y prueba así:

Código PHP:
Ver original
  1. if(password_verify($_POST['pass'], $row['pass_ad'])){
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 09/01/2019, 11:32
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 810
Antigüedad: 11 años, 5 meses
Puntos: 7
Pregunta Respuesta: Verificar contraseña hash

Hola!, no funciona.

el código quedo asi:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $email=$_POST['email'];
  4.  
  5.  
  6.  
  7. include("conect/conectando.php");
  8. $cone=conectar();
  9.  
  10.  
  11.  
  12. $res = mysqli_query($cone,"SELECT * FROM adusuarios WHERE correo_ad='$email'");
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19. if(mysqli_num_rows($res)==1){
  20.     $row = mysqli_fetch_assoc($res);
  21.     if(password_verify($_POST['pass'], $row['pass_ad'])){
  22.    
  23.         echo "Contraseña Válida";
  24.     }else{
  25.         echo "Error en Datos";
  26.     }
  27. }else{
  28.     echo "Error en datos";
  29. }
  30.  
  31.  
  32.    
  33.  ?>

Utilizo XAMPP, y donde almaceno la contraseña es VARCHAR de 255,
si copio y pego este ejemplo si funciona.

Código PHP:
Ver original
  1. <?php
  2. // Ver el ejemplo de password_hash() para ver de dónde viene este hash.
  3. $hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';
  4.  
  5. if (password_verify('rasmuslerdorf', $hash)) {
  6.     echo '¡La contraseña es válida!';
  7. } else {
  8.     echo 'La contraseña no es válida.';
  9. }
  10. ?>

que es del manual oficial, ahora si cambio "rasmuslerdof".. no funciona, y no se que es, ya que no lo encuentro en ningún lado...

Voy a seguir con contraseñas visibles hasta aprender mas... ya no se me ocurre que hacer,
Gracias!
Saludos Atte.
  #9 (permalink)  
Antiguo 12/01/2019, 20:38
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.435
Antigüedad: 3 años, 6 meses
Puntos: 262
Respuesta: Verificar contraseña hash

ok si detallas el ejemplo que estas viendo no es distinto a lo que te indique que hicieras, el asunto es que ese hash del ejemplo es el "rasmuslerdof" encriptado, asi que cuando haces el verificacion de este, te dice que esta correcto, ahora bien, habría que ver como estas haciendo el hash de la contraseña que guardas en tu base de datos.

Pues si haces algo así:

Código PHP:
Ver original
  1. $hash = 'Aquí el hash almacenado en tu base de datos';
  2.  
  3. if (password_verify('aqui la contraseña de ese hash', $hash)) {
  4.     echo '¡La contraseña es válida!';
  5. } else {
  6.     echo 'La contraseña no es válida.';
  7. }

pues debería de funcionar, si no algo anda mal en tu proceso.

Prueba con este simple ejemplo y verás:

Código PHP:
Ver original
  1. $hash = '$2y$10$y12juAqfEuf3rKF3/nH12uI.xf.Rvy/x/f.wWcrK31NvUjDgqzcsy';
  2.  
  3. if (password_verify('14624982', $hash)) {
  4.     echo '¡La contraseña es válida!';
  5. } else {
  6.     echo 'La contraseña no es válida.';
  7. }
__________________
[email protected]
HITCEL
  #10 (permalink)  
Antiguo Hoy, 13:53
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 810
Antigüedad: 11 años, 5 meses
Puntos: 7
Respuesta: Verificar contraseña hash

Hola Nuevamente, muchas gracias por el ejemplo y aclararme mis dudas,!!!
lo pruebo y te comento.:

Gracias por tu tiempo.!

Saludos.



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