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
[-]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;
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
[-]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;
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.