AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Einlesen von Verschlüsselter Datei funktioniert nicht richti
Thema durchsuchen
Ansicht
Themen-Optionen

Einlesen von Verschlüsselter Datei funktioniert nicht richti

Ein Thema von Jens Hartmann · begonnen am 25. Jan 2009 · letzter Beitrag vom 25. Jan 2009
Antwort Antwort
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#1

Einlesen von Verschlüsselter Datei funktioniert nicht richti

  Alt 25. Jan 2009, 16:54
Hallo zusammen,

Habe mal wieder ein Problem. Ich bin jetzt an dem Punkt angekommen, das ich von meinem Programm die verschlüsselte Lizenzdatei einlesen lassen will.

Die Lizenzdatei erstelle ich mit einem selbst geschriebene Programm, in dem der Lizenzcode, bestehend aus verschiedenen Kundeninformationen zusammengesetzt wird, dann XOR verschlüsselt wird und zum Schluß in einer Datei gespeichert wird.

Delphi-Quellcode:
  for A := 1 to Length (Lizenzdatei)do
  begin
  Lizenzdatei[A] := Char(Byte(Lizenzdatei[A]) xor 42);
  end;
  Memo1.Text := Lizenzdatei;
  Memo1.Lines.SaveToFile('..\Liz\'+Kundenname+'.liz');
Lese ich die Datei nun in meinem Programm ein, funktioniert das ganze auch ganz gut, bis auf das mein Ergebnis mit zusätzlichen Zeichen versehen ist.


Jens HartmannWohnhausV1.00V1.00.25.01.2009.1HU2009SER1D iese Lizenz sollte bitte nicht genutzt werden //Soll String

Jens' HartmannWohnhausV1.00V1.00.25.01.2009.1HU2009SER1D iese' Lizenz' sollte' bitte' nicht' genutzt' werden //Ist String


Einlese Vorgang:

Delphi-Quellcode:
  Memo2.Lines.LoadFromFile('.\Liz\'+Kundenname+'.liz');
  Lizenzdatei := Memo2.Text;
  for A := 1 to Length (Lizenzdatei)do
  begin
  Lizenzdatei[A] := Char(Byte(Lizenzdatei[A]) xor 42);
  end;
  Memo2.Text := Lizenzdatei;
  end;


Meine Frage ist nun, wie kommt das und wie kann ich das ändern?

Danke schon mal

MFG

Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Einlesen von Verschlüsselter Datei funktioniert nicht ri

  Alt 25. Jan 2009, 16:59
Besitzt die Datei Zeilentrenner
Markus Kinzler
  Mit Zitat antworten Zitat
25. Jan 2009, 16:59
Dieses Thema wurde von "mkinzler" von "XML" nach "Sonstige Fragen zu Delphi" verschoben.
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Einlesen von Verschlüsselter Datei funktioniert nicht ri

  Alt 25. Jan 2009, 17:05
In meinem Programm, womit ich die Datei erstelle, sind eingendlich keine Zeilentrenner vorhanden.
Ich hänge mal eine Datei an.

Hier mal die komplette Procedure zum erstellen der Datei

Delphi-Quellcode:
procedure TForm1.BTErstellenClick(Sender: TObject);
var
Stammdaten : String;
Kunde : String;
Kundenname : String;
Ansprechpartner : String;
Matchcode : String;
Objekt : String;
Anschrift : String;
Straße : String;
Hausnummer : String;
Wohnort : String;
PLZ : String;
Ort : String;
Tel : String;
Fax : String;
EMail : String;
Version : String;
Seriennummer : String;
Lizenznummer : String;
Lizenzdatei : String;
A : Integer;
Erstellen : String;
F : Textfile;
begin
  Kundenname := DBEdit1.Text;
  Ansprechpartner := DBEdit2.Text;
  Matchcode := DBEdit3.Text;
  Objekt := DBEdit4.Text;
  Straße := DBEdit5.Text;
  Hausnummer := DBEdit6.Text;
  PLZ := DBEdit7.Text;
  Ort := DBEdit8.Text;
  Tel := DBEdit9.Text;
  Fax := DBEdit10.Text;
  EMail := DBEdit11.Text;
  Version := CBVersion.Text;
  Seriennummer := EDSeriennummer.Text;
  Lizenznummer := EDLizenznummer.Text;
  Anschrift := Straße+Hausnummer;
  Wohnort := PLZ+Ort;
  Lizenzdatei := Kundenname+Objekt+
                 Version+Seriennummer+Lizenznummer+
                 'Diese Lizenz sollte bitte nicht genutzt werden';
  MMLizenzdatei.Clear;
  MMLizenzdatei.Lines.Append(Lizenzdatei);
  Memo1.Text := Lizenzdatei;
  Delay(4000);
  for A := 1 to Length (Lizenzdatei)do
  begin
  Lizenzdatei[A] := Char(Byte(Lizenzdatei[A]) xor 42);
  end;
  Memo1.Text := Lizenzdatei;
  Memo1.Lines.SaveToFile('..\Liz\'+Kundenname+'.liz');
   Delay(1000);
   TabSheet4.Show;
   BTErstellen.Enabled := False;
   BTKundendatenerstellen.Enabled := True;
end;
MFG

Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Einlesen von Verschlüsselter Datei funktioniert nicht ri

  Alt 25. Jan 2009, 17:11
Die Zeichen scheinen durch die Leerzeichen zu entstehen. Ersetzte diese mal vor der Verschlüsselung durch ein anderes Zeichen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Einlesen von Verschlüsselter Datei funktioniert nicht ri

  Alt 25. Jan 2009, 17:27
Ja genau, die Zeichen entstehen durch die Leerzeichen,

Das Problem ist nur, diese Leerzeichen, können ja immer wieder vorkommen.
Habe mal überlegt, ob ich eventuell den String, vor dem speichern und nach dem lesen bearbeiten kann.
Das Problem ist halt nur beim lesen, woher soll mein Programm wissen wo mal Leerzeichen waren und jetzt wieder hingehören.

Delphi-Quellcode:
      
sl[i] := StringReplace(sl[i], #0, ' ', [rfReplaceAll]);
MFG


Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Einlesen von Verschlüsselter Datei funktioniert nicht ri

  Alt 25. Jan 2009, 17:34
sl[i] := StringReplace(sl[i], #0, ' ', [rfReplaceAll]); Was wird das denn ?

Also ich würde mir erst mal den Ausgangsstring in Hex anschauen. Da muss ausser den Leerzeichen noch was drin sein.
Durch ein zeichenweises XOR wird das nicht dabei herauskommen.

Und das Memo würde ich höchstens zur Anzeige benutzen, nicht jedoch um die Daten darin zu verschlüsseln. Memo.Text wird dir immer ein CRLF ans Ende hängen, weil es glaubt hier ist eine Zeile zu Ende.

Also beginne am Anfang das Problem zu untersuchen, und speichere deinen String mal ab und schau ihn dir in einem Hex-Editor an.

Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Einlesen von Verschlüsselter Datei funktioniert nicht ri

  Alt 25. Jan 2009, 17:37
Durch die XOR-Verschlüsselung entstehen binäre Daten, die man mit einem TMemo oder TStringList nicht sauber laden oder speichern kann.
Daher folgende Funktionen verwenden (irgendwo geklaut aus der DP):
Delphi-Quellcode:
function FileToString(const FileName: string): AnsiString;
var
  fs: TFileStream;
  Len: Integer;
begin
  fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
  try
    Len := fs.Size;
    SetLength(Result, Len);
    if Len > 0 then
      fs.ReadBuffer(Result[1], Len);
  finally
    fs.Free;
  end;
end;

Procedure StringToFile(const FileName, Str: string);
var
  fs: TFileStream;
  Len: Integer;
begin
  fs := TFileStream.Create(FileName, fmcreate);
  try
    Len := Length(Str);
    fs.Write(Str[1], Len);
  finally
    fs.Free;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Einlesen von Verschlüsselter Datei funktioniert nicht ri

  Alt 25. Jan 2009, 18:16
So, mal wieder Weltklasse.

Jetzt sitze ich einen ganzen Sontag vor einem Problem, Habe so gut wie alle Schreib und Lese Befehle ausprobiert, die mein
Delphiwissen und meine Bücher hergeben, nur auf Stream, da bin ich nicht drauf gekommen.

Danke Danke Danke

Jetzt Funtz alles.

MFG

Jens

War mal wieder absolut genial, Danke.

Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 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