Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-09-2019
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
HASH y Windows 10

Hace unos meses planteaba un problema que estaba teniendo con una aplicación en red: En una máquina con W7 funciona sin problema alguno pero en otra con W10 no había manera de que el código que ponía en aquel hilo funcionara; ni bine, ni mal: directamente no funcionaba.

Por probar cambié un poco el diseño de la tabla donde se guardan los usuarios y ahora hago esta verificación:
Código:
try
{
     Application->OnException = NULL;
     Application->CreateForm(__classid(TfLogin), &fLogin);
     if ((nValor = fLogin->ShowModal()) != mrOk)
          throw Exception("Cancelado por el usuario.\nSistema desconectado.");

     delete fLogin;
     Application->OnException = DisplayError;

     Query->Close();
     Query->SQL->Text = "SELECT Clave, CAST(HASH('" + ClaveUser + "') AS VARCHAR(25)) FROM Claves WHERE Nombre = :Nombre";
     Query->ParamByName("Nombre")->AsString = NombreUser;
     Query->Open();

     if (Query->FieldByName("Clave")->AsString != Query->Fields->FieldByNumber(2)->AsString)
          throw Exception("Usuario / clave desconocidos.\nSistema desconectado.");

     DesconectaDb();

     Query->Params->Clear();
     Query->Params->Add("lc_ctype=ISO8859_1");
     Query->SQLDialect = 3;
}
catch(Exception &Exc)
{
     Mensaje(1, Exc.Message, "Terminar");
     Application->Terminate();
     return 0;
}
Y volvemos a lo mismo: en el puesto que funciona con W7 no hay ningún problema pero en el que tiene W10 no hay manera de que ese query y su validación posterior funcione. Ya no sé que hacer.
Responder Con Cita
  #2  
Antiguo 27-09-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Qué no funciona, qué mensaje o error sale, en qué línea, etc...?
Responder Con Cita
  #3  
Antiguo 27-09-2019
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
No, no da ningún error no nada. Simplemente al llegar al condicional SIEMPRE se sale por el throw. Y he comprbado que lo que está guardado en la base de datos (Clave) y lo que se calcula a partir de CAST(HASH('" + ClaveUser + "') AS VARCHAR(25)) (ClaveUser es una variable del programa y está bien asignada) tienen el mismo valor si lo ejecuto en IBManager, por ejemplo.
Responder Con Cita
  #4  
Antiguo 27-09-2019
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Si se sale por throw tienes un error. Cual es...
__________________
El malabarista.
Responder Con Cita
  #5  
Antiguo 27-09-2019
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Si te fijas el throw está puesto para cuando el HASH de la clave que pone el usuario y el valor que está grabado no coinciden; fuerzo el error, lo que significa que a pesar de lo que está grabado no coinciden los valores.
Responder Con Cita
  #6  
Antiguo 27-09-2019
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Algunas ideas:

1- Instala windows 10 en una VM y prueba.
2- Captura los sql que recibe firebird:

https://stackoverflow.com/questions/...rd-sql-queries

es probable que tengas 2 hilos/procesos que estan variando por problemas de timing y creas que el codigo esta haciendo paso 1 -> paso2 y resulta que es paso2 -> paso1

Ah, se me olvido el paso mas util:

3- Saca ese codigo del programa y lo pones en una app minima (como de consola), Si el error no se reproduce, sabes con certeza que el problema NO esta ahi, o tienes un bug parecido al que te puse arriba del orden.

Si el error SI se reproduce, tienes un codigo mucho mas minimo que mirar. Usando logs/traces puedes ver con claridad que pasa.
__________________
El malabarista.

Última edición por mamcx fecha: 27-09-2019 a las 21:14:35.
Responder Con Cita
  #7  
Antiguo 28-09-2019
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Algunas ideas:
Gracias por las ideas. Intentaré hacer las pruebas que me sugieres. No obstante vuelvo a señalar que la misma aplicación corriendo en dos máquinas distintas en la que tiene W7 funciona sin ningún problema, al igual que en mi equipo que tiene el mismo S.O., mientras que todos los problemas los está dando el PC con W10. Por eso, al igual que en el otro hilo que refería, me inclino a pensar que tiene algo que ver con el S.O.

Cita:
Empezado por mamcx Ver Mensaje
es probable que tengas 2 hilos/procesos que estan variando por problemas de timing
No digo que no sea posible, pero no creo porque esa parte del código es lo primero que se lanza y no hay nada más funcionando cuando se pide la clave de acceso al sistema. De todas maneras indagaré, aunque también he de decir que no uso hilos en mis programas porque no acabo de entender como funcionan. Sé que en muchos casos supone un atraso, pero no soy capaz de comprenderlos.
Responder Con Cita
  #8  
Antiguo 28-09-2019
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Otra cosa.
Interesantísimo enlace. Tengo que leerlo con atención porque me podría ayudar bastante.
Responder Con Cita
  #9  
Antiguo 28-09-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y por qué no presentas la excepción en lugar del mensaje personalizado?
Código:
throw Exception(e....);
Responder Con Cita
  #10  
Antiguo 30-09-2019
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Y por qué no presentas la excepción en lugar del mensaje personalizado?
Código:
throw Exception(e....);
También es verdad.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
calcular hash (MAJ) Trucos 6 26-02-2023 01:28:45
codigo hash maco2007 Varios 4 20-10-2007 17:01:04
Calcular hash md5 Lepe Trucos 1 10-05-2007 15:11:58
Hash RaulChemical Varios 1 07-09-2004 20:10:11
¿Hash or not Hash? hgiacobone Varios 5 17-07-2003 19:43:26


La franja horaria es GMT +2. Ahora son las 00:51:54.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi