FireDAc kullanarak Firebird veritabanını encrypt etmek ve verileri çağırdığımda da decrypt etmek istiyorum. Ancak günlerdir uğraşmama rağmen bu işin içinden çıkamadım.
Öncelikle veri tabanına kayıt ederken Datasource'un OnUpdateData eventinde encrypt etmeyi ve FDQuery'in AfterOPEN eventinde de decrypt etmeyi denedim. Fakat başarılı olamadım. Kod şöyle:
Kod: Tümünü seç
procedure TForm1.DataSource1UpdateData(Sender: TObject);
var
i:integer;
begin
with TDataSource(Sender).DataSet do begin
case State of
dsInactive: ;
dsBrowse: ;
dsEdit: ;
dsInsert: begin
Edit;
for i := 1 to FieldCount - 1 do begin //id hariç
Fields[i].AsString:= EncodeXXX(Fields[i].AsString);
end;
end;
dsSetKey: ;
dsCalcFields: ;
dsFilter: ;
dsNewValue: ;
dsOldValue: ;
dsCurValue: ;
dsBlockRead: ;
dsInternalCalc: ;
dsOpening: ;
end;
end;
end;
procedure TForm1.FDQuery1AfterOpen(DataSet: TDataSet);
var
i:integer;
begin
with DataSet do begin
First;
while not EOF do begin
Edit;
for i := 1 to FieldCount - 1 do
DataSet.Fields[i].AsString:=DecodeXXX(DataSet.Fields[i].AsString);
Next;
end;
end;
end;
Sizlerden istemiş olduğum ikinci yardıma gelince;yukarıda yapmaya çalıştığım string encyption yöntemi yerine AES-ECB-NNN diye FireDAC için bir şifreleme sisteminin olduğunu farkettim. Ancak bunun kullanımıyla ilgili hiçbir döküman ve örnek bulamadım. String encryption yerine bu yöntemi kullanmam daha mı iyi olur sizce?