Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   mostrar en dbgrid campos encriptados-desencriptados (https://www.clubdelphi.com/foros/showthread.php?t=89892)

anubis 25-02-2016 02:14:42

mostrar en dbgrid campos encriptados-desencriptados
 
Hola,
En mi afan de aprender, cada vez la lio mas :(.
El chiste es que, probando, encripte el usuario y contraseña de cada usuario. Hasta ahi bien, porque al crear un usuario nuevo, a la hora de guardar ya lo guarda con codigo encriptado (quiza no es el metodo mas seguro y era preferible un hash), cuando se pide el usuario y contraseña, se encripta lo que el usuario tecleo y se compara con lo que hay guardado dando paso o no al sistema.

el chiste de lo que me voy complicando la vida es que, si tengo un dbgrid de usuarios para seleccionar el que me interesa para moificar o no, me aparece efectivamente los campos con los codigos encriptados :(.
Lo que nose es si con un campo calculado puedo solucionar el problema y que afecte a todo el dbgrid. Metiendo en el modulo de datos dos funciones de encriptado y descriptado.

Me complico verdad?.

AgustinOrtu 25-02-2016 02:44:36

No entiendo, encriptaste todos los campos? Por que?

anubis 25-02-2016 02:45:32

Nono, solo el, usuario y la contraseña

AgustinOrtu 25-02-2016 02:47:01

Y vas a mostrarle en un DBGrid un par de campos que encriptaste porque se supone que no pueden verlos?

anubis 25-02-2016 02:52:34

Si, solo los veo codificados

ecfisa 25-02-2016 03:06:45

Hola.

Si esos campos se guardaron cifrados, podes usar el evento OnGetText para descifrarlo y consecuentemente mostrarlos en el DBGrid.

Suponiendo que los campos se llamen NOMBRE y CLAVE sería:

Código Delphi [-]
...
type
  TForm1 = class(TForm)
    ...
    DBGrid1: TDBGrid;
    procedure FormCreate(Sender: TObject);
    ...
    procedure FormDestroy(Sender: TObject);
  private
    procedure DescifraGetText(Sender: TField; var Text: string; DisplayText: Boolean);
  public
  end;
...

implementation

procedure TForm1.FormCreate(Sender: TObject);
begin
  tuDataSet.FieldByName('NOMBRE').OnGetText := DescifraGetText;
  tuDataSet.FieldByName('CLAVE').OnGetText  := DescifraGetText;
end;

procedure TForm1.DescifraGetText(Sender: TField; var Text: string; DisplayText: Boolean);
begin
  Text := Descifra(Sender.AsString); // Donde "Descifra" sería tu función de descifrado
end;

...

procedure TForm1.FormDestroy(Sender: TObject);
begin
  tuDataSet.FieldByName('NOMBRE').OnGetText := nil;
  tuDataSet.FieldByName('CLAVE').OnGetText  := nil;
end;

Saludos :)

anubis 25-02-2016 03:14:55

Gracias por la respuesta.

Ya lo solucione, cree un campo calculado y ahi decodifique el usuario y ya lo puedo ver bien en un dbgrid ;).

Guardare tambien tu propuesta.

anubis 25-02-2016 03:50:21

Perdon, no me ha dejado editar el ultimo post.

Creo que de momento no me voy a complicar la vida, porque funcionar funciona pero mejor le he quitado el encriptado a los campos para facilitarme la vida.;).
Pero funcionar si funciona.


La franja horaria es GMT +2. Ahora son las 07:22:56.

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