Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #6  
Antiguo 31-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.142
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

A ver, porque creo que estamos liando las cosas, y no sólo con el tema de Oracle y Borland. Hasta donde yo llego, las contraseñas no se guardan cifradas, esto es, si entendemos por cifradas algo que podría llegar a descifrarse conociendo el algoritmo y la clave oportuna.

SHA significa "Secure Hash algorithm", es decir, que no se trata de un algoritmo de cifrado (aunque reconozco que yo aquí estoy más perdido que un pavo en un garaje el día de navidad), pero es un algoritmo de "hashing". No es lo mismo. El primero se puede revertir, el segundo no.

En mi experiencia, lo que se guarda en una base de datos no son las contraseñas de los usuarios en claro, ni si quiera cifradas, sino que lo que se guarda es un "hash" de las contraseñas, ni más, ni menos. De ese modo, ni siquiera el administrador del sistema puede conocer la contraseña de un usuario, en teoría.

Ahora tú supón que tienes una tabla "users" con los campos "user_login" y "user_password". El usuario te proporciona su login y contraseña (en claro) y tú tienes que verificar si efectivamente es un usuario registrado o no lo es. La consulta SQL debería quedar tal que así:

Código SQL [-]
SELECT user_id FROM users WHERE (user_password = SHA(input_password))  AND (user_login = input_login);

¿Se comprende? Tú ya tienes la contraseña en claro: te la tiene que proporcionar el usuario. Y lo que tú haces es obtener el "hash" de esa contraseña en claro que te proporciona el usuario y buscar ese "hash" en la tabla de usuarios. Si el "hash" aparece, significa que la contraseña proporcionada es correcta, puesto que su "hash" coincide con el guardado en la base de datos.

Otra cosa es lo que apunta la consulta SQL que he puesto arriba: habría que comprobar también el login de usuario, suponiendo que dos usuarios podrían tener la misma contraseña. Y acaso haya que tener otras cosas en cuenta en este sentido, pero, en todo caso, insisto, si lo que quieres es la contraseña en claro del usuario... este mismo te la da. Y además tiene que ser así, siempre que sólo guardes el "hash" de las contraseñas en la base de datos: tú no puedes deducir de un "hash" la contraseña correspondiente.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 31-12-2007 a las 01:08:42.
Responder Con Cita
 



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
Gestionar un Proyecto por varias personas belpab Varios 33 16-09-2008 15:39:09
Como gestionar un proyecto Aprendiendo Varios 1 30-06-2007 00:28:14
Gestionar excepciones Angel.Matilla C++ Builder 0 29-01-2007 13:41:54
gestionar WM_MOUSEWHEEL en Scrollbox Critter Varios 0 30-10-2006 19:53:00
Gestionar Base de Datos tarco35 Conexión con bases de datos 1 22-11-2003 15:55:33


La franja horaria es GMT +2. Ahora son las 15:00:05.


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