Ver Mensaje Individual
  #17  
Antiguo 17-08-2014
camiz camiz is offline
Miembro
 
Registrado: ene 2012
Posts: 69
Reputación: 13
camiz Va por buen camino
Con respecto a la proteccion de información para luego guardar a la base de datos, boy a ponerlo lo más detallado posible. uso los componentes DCPcrypt que son muy buenos y gratuitos y funciona perfecto hasta en la version XE6 lo he probado.

unas funciones de propias de los componentes que encontre en la web.

Código Delphi [-]
// Codigo para cifrar
function TForm1.Cifrar(Texto, Clave: AnsiString): String;
var
  Cipher: TDCP_Rijndael;
begin
  Cipher:= TDCP_Rijndael.Create(nil);
  Cipher.InitStr(Clave,TDCP_sha512);
  result := Cipher.EncryptString(Texto);
  Cipher.Burn;
  Cipher.Free;
end;
 
// Codigo para desencriptar
function TForm1.Descifrar(Texto, Clave: AnsiString): String;
var
  Cipher: TDCP_Rijndael;
begin
  Cipher:= TDCP_Rijndael.Create(nil);
  Cipher.InitStr(Clave,TDCP_sha512);
  result := Cipher.DecryptString(Texto);
  Cipher.Burn;
  Cipher.Free;
end;

Y aca unas funciones que hagan el trabajo mas fácil...
Código Delphi [-]
// Encripta la cadena de texto
function TForm1.Encriptar(texto :string ) : string;
var
a, b, miClave :string;
begin
  a := '/.._=?%$8¡*¿_["}';
  b := '!_*-.;.,"/$Glk*';
  miClave := Edit1.text;
  result := '';
  result := Cifrar(texto,a);
  result := Cifrar(result,b);
  result := Cifrar(Result,miClave);
end;
// Desencripta la cadena de texto
function TForm1.Desencriptar(texto :string) : string;
var
a, b, miClave :string;
begin
  a := '/.._=?%$8¡*¿_["}';
  b := '!_*-.;.,"/$Glk*';
  miClave := Edit1.text;
  result := '';
  result := Descifrar(texto,miClave);
  result := Descifrar(result,b);
  result := Descifrar(result,a);
end;

*En el caso de este programa ICPer que estamos hablando...
supongamos que Edit1.text es la clave que uno crea al momento de usar por primera vez la aplicación
a y b son caracteres que se puede usar para encriptar el texto ya encriptado mas claro en mi aplicación los datos que se guarda está triple Encriptado con las claves a y b + la clave que crea el que usa el programa. de esta manera ni el que crea el software puede desencriptar la informacion de la BD.

Ahora para guardar encriptado asi...
Código Delphi [-]
  with Query do
  begin
    SQL.Clear;
    SQL.Text := 'select * from tabla';
    Active := True;
    Open;
    Insert;
    FieldByName('usuario').AsString := Encriptar(Edit2.Text);
    FieldByName('clave').AsString := Encriptar(Edit3.Text);
    FieldByName('acceso').AsString := Encriptar(Edit4.Text);
    FieldByName('....').AsString := Encriptar(Edit5.Text);
    Post;
    Close;
    Active := False;
  end;
Para desencriptar desde la bd y mostralo en los edits
Código Delphi [-]
with Query do
  begin
    SQL.Clear;
    SQL.Text := 'select * from tabla';
    Active := True;
    if Locate('id',Encriptar(txtid.text),[]) then
    begin
      Edit2.Text := Desencriptar(FieldByName('usuario').AsString);
      Edit3.Text := Desencriptar(FieldByName('clave').AsString);
      Edit4.Text := Desencriptar(FieldByName('acceso').AsString);
      Edit5.Text := Desencriptar(FieldByName('....').AsString);
    end;
    Active := False;
  end;

Bueno espero que sirva de algo, esta es la forma más parecida a como se está usando en la aplicación que se está en discusion en este foro, ademas cada uno puede adaptarlo de acuerdo a la nesesidad.
Responder Con Cita