Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String XOR Verschlüsselung - in Datei speichern (https://www.delphipraxis.net/97165-string-xor-verschluesselung-datei-speichern.html)

axelf98 6. Aug 2007 08:54


String XOR Verschlüsselung - in Datei speichern
 
Hallo,
ich hab grad ein kleines Problem mit einer XOR-Verschlüsselung. Es soll eine XML-Datei als String XOR-Verschlüsselt werden. Dazu wird ein Passwort benutzt. Das klappt wunderbar solange man die Dateien nicht speichert. Es scheint ein Problem mit Zeilenumbrüchen zu geben. Nach dem Laden ist nur noch die erste Zeile Richtig.

Könnt ihr mir helfen?
Ich tippe, dass es an
procedure LadeTextausDatei(pPfad:String);
procedure SpeichereTextinDatei(pPfad:String);
liegt.

Danke!
Delphi-Quellcode:
unit sicherheit;

interface    uses Dialogs,classes;

type TVerschluesselung = class

    constructor _create(Schluessel,Daten: WideString);
    function Entschluesseln: WideString;
    function Verschluesseln: WideString;
    procedure LadeTextausDatei(pPfad:String);
    procedure SpeichereTextinDatei(pPfad:String);
    destructor _destroy;

    public
    private
     Data,key: WideString;
     index: integer;
     _Ergebnis: WideString;
     function nextkeybyte: integer;
   
end;

implementation

{ TVerschluesselung }


constructor TVerschluesselung._create(Schluessel, Daten: WideString);
begin
     if length(Schluessel) < 2 then exit;
     key:= Schluessel;
     Data := Daten;
     index := 0;
end;

function TVerschluesselung.Entschluesseln: WideString;
begin
     result := Verschluesseln;
end;

function TVerschluesselung.nextkeybyte: integer;
begin
     result := ord(key[(index mod length(key))+1]);
     inc(index);
end;

function TVerschluesselung.Verschluesseln: WideString;
var Ergebnis: String;
    i: integer;
begin
     Ergebnis := '';
     for i:= 1 to length(Data) do
     begin
          Ergebnis := Ergebnis + chr(ord(Data[i]) XOR nextkeybyte);
     end;
     result := Ergebnis;
     _Ergebnis := Ergebnis;
end;

destructor TVerschluesselung._destroy;
begin
     //
end;

procedure TVerschluesselung.LadeTextausDatei(pPfad: String);
var txtDatei: TStringlist;
begin
     txtDatei := TStringList.Create;
     txtDatei.LoadFromFile(pPfad);
     Data := txtDatei.Text;
     txtDatei.Destroy;
end;

procedure TVerschluesselung.SpeichereTextinDatei(pPfad: String);
var txtDatei: TStringlist;
begin
     txtDatei := TStringList.Create;
     txtDatei.Add(_Ergebnis);
     txtDatei.SaveToFile(pPfad);
     txtDatei.Destroy;
end;

end.

DGL-luke 6. Aug 2007 08:57

Re: String XOR Verschlüsselung - in Datei speichern
 
Hallo,

das ist gut möglich. Jag das Teil vor dem Speichern / nach dem Laden durch ne Kodierung, die dir aus den rohen Bytes lesbare Zeichen (ASCII) macht, z.B. Bin64.

Oder speichere es per TFilestream.

axelf98 6. Aug 2007 09:30

Re: String XOR Verschlüsselung - in Datei speichern
 
Danke hat geklappt


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 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