Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String mit AES verschlüsseln (https://www.delphipraxis.net/148040-string-mit-aes-verschluesseln.html)

stev-e87 21. Feb 2010 08:43


String mit AES verschlüsseln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,

ich versuche momentan einen String (= Inhalt einer XML- Komponente) mittels AES zu verschlüsseln, was natürlich nicht klappt. Sonst wär ich ja nicht hier drin ;)
Ich benutze dafür die AESLib von J. Rathlev (www.rathlev-home.de/sources/delphi.html) und das dazugehörige Sample. In diesem wird leider nur das Verschlüsseln von Dateien angeboten, es wird also mit Filestreams gearbeitet. Das ganze sieht jetzt so aus:

Code:
procedure Encrypt(Pwd:String);
var
  s : string;
  sDest, sSource : TFileStream;
  Len : longint;
begin
  //Stream nach File sichern, Umweg nötig, da Handling mit TStringstreams nicht geht
  //Wird am Ende der Routine gelöscht (Mehrfachüberschreibung)
  frm_Safe.com_XML.SaveToFile('database2.xml');
  s:= 'database.tcdb';
  sSource:=TFileStream.Create('database2.xml',fmOpenRead+fmShareDenyNone);
  sDest:=TFileStream.Create(s,fmCreate);
  Screen.Cursor:=crHourGlass;
  with TEncryption.Create(Pwd,0,defCryptBufSize) do begin
    if EncryptStream(sSource,sDest) then begin
      //MessageDlg ('File encrypted to: '#13+s,mtInformation,[mbOK],0);
      //edtFiles.Text:=s;
      end
    else
      MessageDlg ('Beim Verschlüsseln ist ein Fehler aufgetreten!',mtError,[mbOK],0);
    Free;
  end;
  sSource.Free;
  sDest.Free;
  Screen.Cursor:=crDefault;
  //Mehrfachüberschreibung
  //http://www.delphi-treff.de/tipps/dateienverzeichnisse/wiki/Dateien%20ohne%20R%C3%BCckst%C3%A4nde%20entfernen/
  ShredFile('database2.xml',3);
end;
Ich möchte den Umweg über eine Datei vermeiden, weil es ohne Shreddern zu unsicher ist und das Shreddern der Dummy- Datei Performance kostet, die ich einsparen könnte. Habe versucht die Filestreams durch normale Streams,... zu ersetzen, hin und her konvertiert. Das verschlüsselte Ergebnis ist dann speicherplatztechnisch viel Kleiner als das Ausgangsmaterial (der XML- Inhalt), was logischerweise keinen Sinn macht. Ich schaffe es einfach nicht mit anderen Typen als Filestreams zu arbeiten.

Im Source der AESlib finde ich auch einfach keinen Anhaltspunkt... hänge Sie mal mit an den Thread, falls einer nachschauen mag.

Hoffe einer von euch hat bei diesem Thema mehr Durchblick. Wäre auch über eine Alternative zu J.Rathlevs Version froh.

Danke!

himitsu 21. Feb 2010 08:51

Re: String mit AES verschlüsseln
 
Ich kenn diese Lib nicht, aber da in dem Beispiel das Verschlüsseln von Streams angeboten wird, kannst du entweder deinen String in einen Stream, wie z.B. TMemoryStream oder gar TStringStream (da deine Delphi-Version nicht angebeben ist, kann ich nicht sagen ob Letzeres auch schon bei dir existiert) kopieren und dann diesen verschlüsseln.

Matze 21. Feb 2010 08:53

Re: String mit AES verschlüsseln
 
Hallo,

direkt kann ich dir nicht helfen, aber mit dem DEC hatte ich damit früher keine Probleme. Beispiele findest du in der DP genügend, bsp. hier.

Ansonsten könntest du vielleicht mit TMemoryStream Erfolg haben. Aber sicher bin ich mir nicht.

Grüße, Matze


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz