AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verschlüsselung einer CSV Datenbank Klappt nicht ganz
Thema durchsuchen
Ansicht
Themen-Optionen

Verschlüsselung einer CSV Datenbank Klappt nicht ganz

Ein Thema von 5etH · begonnen am 8. Mai 2009 · letzter Beitrag vom 8. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#1

Verschlüsselung einer CSV Datenbank Klappt nicht ganz

  Alt 8. Mai 2009, 10:53
Hallo Zusammen,

momentan arbeite ich an einem Programm das eine CSV-Datei als Datenbank benutzt. Diese Datei würde ich gerne Verschlüsseln.

Ich Verschlüssele mit RCx

Anfangs lief alles wunderbar. Wenn ich die Datei unverschlüsselt geladen hatte dann Codiert und wieder Decodiert hatte war alles super, aber wenn ich die CSV-Date verschlüsselt gespeichert und wieder geladen hatte, lädt es nicht alles in das Memo oder in das Stringgrid mittels diesem Code

Delphi-Quellcode:
procedure loadgrid(StringGrid: TStringGrid; const FileName: TFileName);
var
  csv : TStringList;
  i : Integer;
begin
  csv := TStringList.create;
  csv.loadfromfile(Filename);
  stringGrid.rowCount := csv.count ;
  for i:=0 to csv.count -1 do
    begin
       clear(CSV[i]);
      StringGrid.Rows[i].Delimiter:=';';
     StringGrid.Rows[i].DelimitedText:=csv[i];
    end;
  csv.free;
end;
er bricht dann irgendwann ab, wobei die Datenmenge nicht groß ist (3 KB)

Ich glaube, das er irgendwie ein Problem beim einlesen mit "LoadfromFile" hat irgendein Zechen schmeckt ihm nicht

Hier die beiden Aufrufe zum Ver- und Entschlüsseln

Delphi-Quellcode:

procedure TForm1.Button3Click(Sender: TObject);
var
  x: TRCxContext;
  I: Integer;
  C: Integer;
  STR1,STR2:String;
begin
stringgrid2.RowCount := stringgrid1.RowCount;
stringgrid2.ColCount := stringgrid1.colcount;
for I := 0 to stringgrid1.RowCount - 1 do
begin
  for C := 0 to stringgrid1.ColCount - 1 do
begin
str1 := '';
str2 := '';
str1 := Stringgrid1.Cells[C,i];
  setLength(str2,length(str1));
  RCxInit(x,'Passwort');
  RCxenCode(x, str1[1], str2[1], Length(str1)); // verschlüsseln
  RcxDone(x);
  stringgrid2.Cells[C,i] := str2;
end;
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
  x: TRCxContext;
  I: Integer;
  C: Integer;
  STR1,STR2:String;
begin
stringgrid3.RowCount := stringgrid2.RowCount;
stringgrid3.ColCount := stringgrid2.colcount;
for I := 0 to stringgrid2.RowCount - 1 do
begin
  for C := 0 to stringgrid2.ColCount - 1 do
begin
str1 := '';
str2 := '';
str1 := Stringgrid2.Cells[C,i];
  setLength(str2,length(str1));
  RCxInit(x,'Passwort');
  RCxdeCode(x, str1[1], str2[1], Length(str1)); // verschlüsseln
  RcxDone(x);
  stringgrid3.Cells[C,i] := str2;
end;
end;
end;
Ich weis ehrlich gesagt nicht wie ich damit umgehen soll und hoffe das ihr mir Helfen könnt das er alles komplett einliest und auch wieder richtig Entschlüsseln kann.

Ich hoffe das ich es einigermaßen gut beschrieben hab ansonsten werde ich den Post nochmal editieren falls Unklarheiten vorhanden sein sollten.

Gruß
Manu
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Verschlüsselung einer CSV Datenbank Klappt nicht ganz

  Alt 8. Mai 2009, 11:02
Hallo,

bevor Du die Datei in Dein StringGrid lädst solltest
Du sie wieder dekodieren/entschlüsseln.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Verschlüsselung einer CSV Datenbank Klappt nicht ganz

  Alt 8. Mai 2009, 11:15
das hat damit nicht zu tun, da er schon bei "csv.loadfromfile(Filename);" nicht die ganze datei einlädt sondern nur ein teil bis irgentwo was kommt, dass loadfromfile wohl nicht verträgt.
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Verschlüsselung einer CSV Datenbank Klappt nicht ganz

  Alt 8. Mai 2009, 11:19
.. wenn loadfromfile eine verschlüsselte Datei einliest,
dann kannst Du davon ausgehen, dass sich darin Zeichen befinden
die loadfromfile nicht schmecken werden.
Das loadfromfile des StringGrids liest in der Regel TextDateien ein.

Also vorher entschlüsseln und dann in das StringGrid laden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Verschlüsselung einer CSV Datenbank Klappt nicht ganz

  Alt 8. Mai 2009, 11:28
das hat leider alles so keinen sinn, der zerkloppt mir das immer egal wie ich es lade. Wäre es nicht vielleicht leichter die Datei an sich verschlüsselt zu speichern anstatt den Inhalt, es dann in einen Filestream zu laden um den dann zu entschlüsseln, und den Filestream dann in das Stringgrid zu laden ?

Leider hätte ich aber dazu nicht die Algorithmen, hoffe mal das ihr mir dann aushelfen könntet
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Verschlüsselung einer CSV Datenbank Klappt nicht ganz

  Alt 8. Mai 2009, 11:56
.. sollte ungefähr so gehen..

Delphi-Quellcode:
procedure loadgrid(StringGrid: TStringGrid; const FileName: TFileName);
var
  csv : TStringList;
  i : Integer;
  mStream: TMemoryStream
begin
  mStream := TMemoryStream.create;
  decodeFile(fileName,mStream);
  mStream.Posistion := 0;
  csv := TStringList.create;
  csv.loadfromStream(mStream);
  mStream.free;
  stringGrid.rowCount := csv.count ;
  for i:=0 to csv.count -1 do
    begin
       clear(CSV[i]);
      StringGrid.Rows[i].Delimiter:=';';
     StringGrid.Rows[i].DelimitedText:=csv[i];
    end;
  csv.free;
end;
Delphi-Quellcode:
procedure decodeFile(fileName:TFileName;mStream:TMemoryStream);
var
  x: TRCxContext;
begin
  mStream.loadfromFile(fileName);
  RCxInit(x,'Passwort');
  RCxdeCode(x,mStream,mStream.size); // entschlüsseln
  RcxDone(x);
end;


procedure encodeFile(fileName:TFileName;mStream:TMemoryStream);
var
  x: TRCxContext;
begin
  RCxInit(x,'Passwort');
  RCxenCode(x,mStream,mStream.size); // verschlüsseln
  RcxDone(x);
  mStream.Position:=0;
  mStream.saveToFile(fileName);
end;
.. ist allerdings ungetestet

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Verschlüsselung einer CSV Datenbank Klappt nicht ganz

  Alt 8. Mai 2009, 12:25
okay hab es eingebaut und wollte es auch gleich testen leider bekomme ich eine Zugriffsverletzung an folgender Stelle

wollte es bevor ich es Laden kann ja erst einmal codieren:
Delphi-Quellcode:
procedure encodeFile(fileName:TFileName;mStream:TMemoryStream);
var
  x: TRCxContext;
begin
  RCxInit(x,'Passwort');
  RCxenCode(x,mStream,mstream,mStream.size); // Zugriffsverletzung
  RcxDone(x);
  mStream.Position:=0;
  mStream.saveToFile(fileName);
end;



procedure TForm1.Button6Click(Sender: TObject);
var
test : TMemoryStream;
begin
  test := TMemoryStream.create;
  test.loadfromfile('C:\Dokumente und Einstellungen\masteman\Desktop\TESTPROGRAMM\data.sux');
  encodeFile('C:\Dokumente und Einstellungen\masteman\Desktop\TESTPROGRAMM\data.sux',test);
end;
habe ich da was falsch gemacht oder kann RCx das einfach nicht ?

gruß
Manu
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Verschlüsselung einer CSV Datenbank Klappt nicht ganz

  Alt 8. Mai 2009, 12:40
Hallo,

Du kannst nicht den gleichen Stream als Eingangs und Ausgangsstream nehmen.


Versuche es einmal damit.
Delphi-Quellcode:
procedure encodeFile(fileName:TFileName;mStream:TMemoryStream);
var
  x: TRCxContext;
  outStream : TMemoryStream;
begin
  outStream : TMemoryStream.create.
  outStream.size := mStream.size;
  RCxInit(x,'Passwort');
  mStream.Posistion:=0;
  outStream.Posistion:=0;
  RCxenCode(x,mStream,outStream,mStream.size);
  RcxDone(x);
  outStream.Position:=0;
  outStream.saveToFile(fileName);
  outStream.free;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Verschlüsselung einer CSV Datenbank Klappt nicht ganz

  Alt 8. Mai 2009, 13:02
Den gadanken hatte ich auch schon und auch schonmal gemacht aber ebenso ohne erfolg... habe jetzt mal die RCx hochgeladen.

Ich kann mir einfach keinen reim auf die Zugriffsverletzung machen
Angehängte Dateien
Dateityp: pas rcx_144.pas (5,6 KB, 4x aufgerufen)
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.465 Beiträge
 
Delphi 12 Athens
 
#10

Re: Verschlüsselung einer CSV Datenbank Klappt nicht ganz

  Alt 8. Mai 2009, 13:27
RCxDecode erwartet als Parameter für Source und Dest ein TByteArray das die Eingangsdaten enthält enthält bzw. die Ausgangsdaten aufnimmt.
Du übergibst aber ein Object genauer einen TMemorystream, das kann nicht funktionieren.

Delphi-Quellcode:
procedure encodeFile(fileName: TFileName; mStream: TMemoryStream);
var
  x: TRCxContext;
begin
  RCxInit(x,'Passwort');
  RCxenCode(x, mStream.Memory^, mStream.Memory^, mStream.size);
  RcxDone(x);
  mStream.Posistion := 0;
  mStream.SaveToFile(fileName);
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:52 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