Hallo ihr,
ich benutze das
DEC um ein Teil meiner Daten zu verschlüsseln. Das Problem ist nun aber, dass ich das Passwort ändern kann. Und wenn ich es auf einen Leerstring ändere, dann soll er es gar nicht verschlüsseln. Im allgemeinen macht mir das diese Methode:
Delphi-Quellcode:
procedure TDatenbankBasis.AenderePasswort(const ANeuesPasswort: string; const AWrapper : TDatenbankWrapper);
const
UPDATE_QUERY = 'UPDATE Personen SET %s = "%s" WHERE PersonenID = %d';
var
SLAlteVornamen : TStrings;
SLAlteNachnamen : TStrings;
ILPersonenIDs : TIntegerList;
Cipher : TDECCipher;
i: Integer;
begin
SLAlteNachnamen := TStringList.Create;
SLAlteVornamen := TStringList.Create;
ILPersonenIDs := TIntegerList.Create;
// Je nach Passwort
if ANeuesPasswort = '' then
begin
Cipher := TCipher_Null.Create; // nur kopieren
end else
begin
Cipher := TCipher_Rijndael.Create; // Oder richtig verschlüsseln
end;
try
// Zuerst die alten Namen entschlüsselt holen
GibStringListZuSQL([SLAlteVornamen, SLAlteNachnamen], ILPersonenIDs, 'PersonenID', 'Vorname, Name', 'Personen', '', [True, True], AWrapper as TDatenbankBasis);
// Cipher mit neuem Passwort initieren
Cipher.Init(ANeuesPasswort);
// Und dann die Namen kopieren
BeginTransaction;
try
for i := 0 to ILPersonenIDs.Count - 1 do
begin
ExecSQL(Format(UPDATE_QUERY, ['Vorname', Cipher.EncodeBinary(SLAlteVornamen[i], TFormat_HEXL), ILPersonenIDs[i]]), AWrapper);
Cipher.Done;
ExecSQL(Format(UPDATE_QUERY, ['Name', Cipher.EncodeBinary(SLAlteNachnamen[i], TFormat_HEXL), ILPersonenIDs[i]]), AWrapper);
Cipher.Done;
end;
finally
Commit;
end;
finally
Cipher.Free;
ILPersonenIDs.Free;
SLAlteVornamen.Free;
SLAlteNachnamen.Free;
end;
end;
Das wichtigste an diesem Code ist die Schleife. Wenn wir da angekommen sind, steht in SLAlteVornamen und SLAlteNachnamen der Inhalt unverschlüsselt. Meine Idee war nun, dass ich am Anfang je nach Passwort AES oder Null nehme. Und bei Null dachte ich, dass er nichts macht, außer das zu kopieren. das tut er aber leider nicht. Gibt es eine ähnlich elegante Methode das zu entschlüsseln?
MfG
xZise