Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-03-2009
laelen laelen is offline
Registrado
 
Registrado: mar 2009
Posts: 8
Poder: 0
laelen Va por buen camino
Encriptar contraseña con funciones Mysql

Hola a todos... bueno la verdad este es un foro al que paso muy seguido y con el que he resuelto cantidad de problemas gracias a hilos existentes, pero creo que ha llegado la hora de postear ...

Recien comienzo con delphi la verdad, tengo como 2 meses usandolo, sorry si mi pregunta les resulta demasiado sencilla... El asunto es el siguiente...

Estoy tratando de encriptar contraseñas a la hora de mandarlas a la base de datos (mysql)... La forma en en que lo hago es con MD5 , a la hora de madar los valores pero el detalle es que a la hora de recuperar el valor no se como hacer la comparacion con el valor que han introduciodo el en edit, ya que este esta desencriptado y cuando recupero el valor mediante el select obviamente me lo manda encriptado... hay alguna forma de hacer la comparacion o de convertir el valor del edit a su respectivo MD5 para hacer la comparacion?

No se si me he explicado bien pero desde ya agradezco sus comentarios y cualquier ayuda...desde ya gracias...
Responder Con Cita
  #2  
Antiguo 27-03-2009
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Código PHP:
$contrasena_encriptada MD5("contraseña"); 
Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #3  
Antiguo 27-03-2009
laelen laelen is offline
Registrado
 
Registrado: mar 2009
Posts: 8
Poder: 0
laelen Va por buen camino
Hola D&W ..

bueno gracias por la taan pronta respuesta...
con respecto a tu respuesta estoy segura que asi es la manera correcta de hacerlo en php... la vdd no se si me equivoque de sitio pero me gustaria saber como hacerlo con delphi ...

mira el codigo que tengo es el siguiente...

Código Delphi [-]
procedure TfrmAcceso.Validacion;
begin
  with frmPrincipal.myqry do
  begin
    Database:= frmPrincipal.mydb;
    Close;
    SQL.Clear;
    SQL.Text:= 'SELECT Usuario,Password FROM Usuarios WHERE Usuario =:Usuario AND Password = Md5(:Password)';
    ParamByName('Usuario').AsString:= ledtUsuario.Text;
    ParamByName('Password').AsString:= ledtPassword.Text;
    Open;
    if not isempty then
    begin
      usuario:= FieldByName('Usuario').AsString;
      Password:= FieldByName('Password').AsString;
    end
    else
    begin
      usuario:='';
      Password:= '';
    end;
    Close;
  end;
  if (usuario<>'') and (password<>'') then
  begin
//comparacion sencible mayusculas y minusculas
    if compareStr(ledtUsuario.Text,Usuario)<>0 then
    begin
      Application.MessageBox('El usuario y contraseña son invalidos.'+#13+'Intentelo de nuevo', 'Advertencia', + MB_ICONWARNING + MB_OK);
      ledtPassword.SetFocus;
    end
    else
    begin
//comparacion sencible mayusculas y minusculas
      if compareStr(ledtpassword,Password)<>0 then
      begin
        Application.MessageBox('El usuario y contraseña son invalidos.'+#13+'Intentelo de nuevo', 'Advertencia', + MB_ICONWARNING + MB_OK);
        ledtPassword.SetFocus;
      end
      Else
      begin
        activarMenu(true);
        Close;
      end;
    end;
  end
  Else
  begin
    Application.MessageBox('El usuario y contraseña son invalidos.'+#13+'Intentelo de nuevo', 'Advertencia', MB_ICONWARNING + MB_OK );
    ledtUsuario.SetFocus;
  end;
end;

Obviamente, en la parte de comparacion del password con el edit ledpassword me truena ya que este tiene la contraseña desencriptada y el otro encriptada...

gracias
Responder Con Cita
  #4  
Antiguo 27-03-2009
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Disculpame, pero es que solo leí el post superficialmente .

Según entiendo, lo que andas buscando es obtener el MD5 de una "contraseña" en Delphi. Lamentablemente, Delphi no incluye funciones para obtener este tipo de información. Sin embargo, ya muchos han implementado el algoritmo para Delphi. Te dejo un enlace hacía la implementación hecha por un viejo amigo, seoane. Puedes descargar el código aquí.

Por otro lado, te recomiendo que leas este post que escribí hace casi un año.

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #5  
Antiguo 27-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
laelen:

Creo que te estás liando demasiado y en realidad ya tienes resuelto el problema. Tu consulta:

Código SQL [-]
select usuario, password from usuarios
where usuario = :usuario and password = md5(:password)

es más que suficiente; estás comparando el password (almacenando con md5) con el md5 del password que se escribe en el edit. Así que ya no tienes que hacer más nada; no entiendo porqué quieres obtener el valor de los campos usuario y password, no los necesitas.

Tu código quedaría más o menos así:

Código Delphi [-]
procedure TfrmAcceso.Validacion;
begin
  with frmPrincipal.myqry do
  begin
    Database:= frmPrincipal.mydb;
    Close;
    SQL.Clear;
    SQL.Text:= 'SELECT Usuario,Password FROM Usuarios WHERE Usuario =:Usuario AND Password = Md5(:Password)';
    ParamByName('Usuario').AsString:= ledtUsuario.Text;
    ParamByName('Password').AsString:= ledtPassword.Text;
    Open;

    if isempty then
    begin
      Application.MessageBox('El usuario y contraseña son invalidos.'+#13+'Intentelo de nuevo', 'Advertencia', + MB_ICONWARNING + MB_OK);
      ledtPassword.SetFocus;
    end
    else
    begin
      Application.MessageBox('El usuario y contraseña son invalidos.'+#13+'Intentelo de nuevo', 'Advertencia', MB_ICONWARNING + MB_OK );
      ledtUsuario.SetFocus;
    end;
end;

Y ya, el resto es innecesario.

// Saludos
Responder Con Cita
  #6  
Antiguo 28-03-2009
laelen laelen is offline
Registrado
 
Registrado: mar 2009
Posts: 8
Poder: 0
laelen Va por buen camino
YA solucione mi problema, gracias por sus respuestas...

D&W grax por el post jeje tienes mucha razon en lo de las comparaciones, aunque ren realidad al revisar el codigo me di cuenta que la comparacion era innecesaria en el campo password...

En cuanto a la encriptacion...

Grax Roman la verdad si tenia codigo innecesario, lo modifique a como tu me comentaste, solo le kambie las sentencias del Else y ya me jala perfecto...

el codigo quedo asi:

Código Delphi [-]
procedure TfrmAcceso.Validacion;

begin
  with frmPrincipal.myqry do
  begin
    Database:= frmPrincipal.mydb;
    Close;
    SQL.Clear;
    SQL.Text:= 'SELECT Usuario, Password FROM Usuarios WHERE Usuario =:Usuario AND Password = MD5(:Password)';
    ParamByName('Usuario').AsString:= ledtUsuario.Text;
    ParamByName('Password').AsString:= ledtPassword.Text;
    Open;
    if isempty then
    begin
      Application.MessageBox('El usuario y contraseña son invalidos.'+#13+'Intentelo de nuevo', 'Advertencia', + MB_ICONWARNING + MB_OK);
      ledtPassword.SetFocus;
    end
    Else
    begin
      Usuario:= fieldByname('Usuario').AsString;
      activarMenu(true);
      frmAcceso.Close;
    end;
    Close;
  end;
end;

En cuanto al usuario, ese lo jalo para poner el nombre del Usuario activo en la barra de titulo de la pagina principal...(esto lo hago en el procedimiento activarMenu)...

En fin....Muchas gracias por su ayuda
Responder Con Cita
  #7  
Antiguo 28-03-2009
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por laelen Ver Mensaje
solo le kambie las sentencias del Else y ya me jala perfecto...
Je, je. Es cierto, me falló el copia-y-pega

// Saludos
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
Qué pasa con las funciones de mysql 5.0 (avg, max, count). cesar_gta86 SQL 2 07-05-2008 18:36:22
Encriptar base de datos mysql zevahc Conexión con bases de datos 5 14-01-2008 20:42:42
Contraseña en inicio de un form + MySQL Maury Manosalva OOP 1 05-05-2006 23:23:15
Mysql con usuario y contraseña chipsoni Conexión con bases de datos 2 13-01-2006 17:41:04
delphi con sql o mysql y encriptar bd jash Conexión con bases de datos 2 16-03-2004 07:36:16


La franja horaria es GMT +2. Ahora son las 01:11:49.


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