AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RTF-Text verschlüsseln

Ein Thema von MPirnstill · begonnen am 26. Sep 2013 · letzter Beitrag vom 27. Sep 2013
Antwort Antwort
Benutzerbild von MPirnstill
MPirnstill

Registriert seit: 19. Jul 2004
Ort: Burgdorf
197 Beiträge
 
Delphi XE8 Enterprise
 
#1

RTF-Text verschlüsseln

  Alt 26. Sep 2013, 12:26
Delphi-Version: 7
Hallo,

ich habe da ein kleines Problem.

Ich habe ein Programm geschrieben, in dem man Text im RTF-Format schreiben kann, der anschließend verschlüsselt abgespeichert wird. Ich hatte dafür die scwstrcr.dll genutzt und mich immer gewundert, dass die die Zeilen nach dem wieder laden nicht mehr passten. Das Problem ist, dass diese DLL nur reinen Text verschlüsseln kann und ich dabei leider u.a. die Zeilenschaltungen verliere.

Kann mir hier jemand sage, wie und womit ich den RTF-Text verschlüsseln und abspeichern kann, ohne die Zeilenschaltungen zu verlieren?

viele Grüße
Micha
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: RTF-Text verschlüsseln

  Alt 26. Sep 2013, 13:09
Man könnte den Zeilenvorschub vorab durch Zeichenfolgen ersetzen, die normalerweise im Text nicht vorkommen z.B. <br> oder /n.

Allerdings erscheint es sinnvoller einanderes Verfahren/Komponente zur Verschlüsselung einzusetzen.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: RTF-Text verschlüsseln

  Alt 26. Sep 2013, 13:25
Wandle den Text erst nach Base64.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#4

AW: RTF-Text verschlüsseln

  Alt 26. Sep 2013, 13:48
Hallo,
Kann mir hier jemand sage, wie und womit ich den RTF-Text verschlüsseln und abspeichern kann, ohne die Zeilenschaltungen zu verlieren?
RTF ist AFAIR nicht auf die Codes von Zeilenschaltungen gebunden. Ersetze die Zeilenschaltungen durch

{\line} (sieh aber nach, ob das wirklich der Code dafür ist)


Dann kannst Du auf Sonderzeichen jeglicher Art verzichten.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#5

AW: RTF-Text verschlüsseln

  Alt 26. Sep 2013, 14:05
Schon diff probiert? Dann könnte man mehr sagen (welche RTF-Code/Textänderung das Problem bewirkt)...
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von MPirnstill
MPirnstill

Registriert seit: 19. Jul 2004
Ort: Burgdorf
197 Beiträge
 
Delphi XE8 Enterprise
 
#6

AW: RTF-Text verschlüsseln

  Alt 26. Sep 2013, 14:12
@Mikkey:
Nein, auf Sonderzeichen kann ich nicht verzichten, die werden auch benötigt.

@Bernhard:
Hab mal nach Base64 gesucht, da ich damit noch nix gemacht hab.
Wenn ich das richtig sehe, wollen die Funktionen aber einen String zur Umwandlung.
Wenn ich aber den reinen Text aus der Richview Komponente (der ist String) auslese,
fehlen mir die Zeilenschaltung (Enter dürfen die Nutzer auch anwenden) schon.

Wie kann ich denn den RTF-Text in Base64 umwandeln?

@mjustin:
Nein, diff hab ich noch nicht probiert, verstehe aber auch gerade nicht wie mir das helfen kann.
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: RTF-Text verschlüsseln

  Alt 26. Sep 2013, 14:31
Moin Micha,

ein RTF ist ja eigentlich nur ein Text.
Wenn Du TRichEdit verwendest muss PlainText aber auf false stehen.

Beispiel:

Delphi-Quellcode:
var
  ms : TMemoryStream;
  sl : TStringList;

begin
  ms := TMemoryStream.Create;
  try
    sl := TStringList.Create;
    try
      redtWork.Lines.SaveToStream(ms);
      ms.Position := 0;
      sl.LoadFromStream(ms);
      ShowMessage(sl.Text);
    finally
      sl.Free;
    end;
  finally
    ms.Free;
  end;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von MPirnstill
MPirnstill

Registriert seit: 19. Jul 2004
Ort: Burgdorf
197 Beiträge
 
Delphi XE8 Enterprise
 
#8

AW: RTF-Text verschlüsseln

  Alt 26. Sep 2013, 14:57
UPS!

Hab gerade neue Erkenntnisse gewonnen.

Ich habe mir beim Debuggen mal die Texte vorm Verschlüsseln und Speichern,
sowie nach dem laden und entschlüsseln anzeigen lassen, und es sieht in Debug-Fenster so aus
als hätte der Text die entsprechenden Zeilenschaltungen noch.

Das bedeutet, das ich den 'also noch formatierten' Text nur wieder in mein TRichview-Feld bekommen muss. D.h. ja, ich kann meine alte Verschlüsselungs DLL weiterhin nutzen und hatte nur einen Fehler beim Laden. Ich denke da finde einen Weg.

Danke an alle die geantwortet haben.

@Christian:
Nee, ich nutzt die TRichview-Komponente, da ich beim normalen TRichEdit Darstellungunterschiede zwischen Bildschirm und Drucker hatte.
Micha
Ich habe fertig!

DP - hier werden Sie geholfen!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: RTF-Text verschlüsseln

  Alt 27. Sep 2013, 00:52
Was ist denn das für eine Verschlüsselung? Eigentlich sollte es einer Verschlüsselung egal sein, was die Daten repräsentieren. Ob das nun Text, eine Grafik oder was auch immer ist.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#10

AW: RTF-Text verschlüsseln

  Alt 27. Sep 2013, 11:19
ich habe da ein kleines Problem.
...
Das Problem ist, dass diese DLL nur reinen Text verschlüsseln kann und ich dabei leider u.a. die Zeilenschaltungen verliere.
Dein Problem ist nicht durch den Encrypt/Decrypt-Algorithmus verursacht, sondern liegt an Deiner falschen Behandlung des Richedit-Inhaltes.

Versuche es wie folgt (unter Verwendung des Demo-Codes zur scwstrcr.dll erstellt):

Delphi-Quellcode:
var
  PinCode: string; // z.B. '1357';
  encodedFilename: String; // z.B. <pfad>+'EncodedRTF.dat'

procedure TForm1.EnCryptButtonClick(Sender: TObject);
var
  PC, HX: PChar;
  FileStream: TFileStream;
  StringStream: TStringStream;
  PClen: Cardinal;
  wrkStr: String;
begin
  StringStream := TStringStream.Create('');
  try
    Richedit1.PlainText := False;
    Richedit1.Lines.SaveToStream(StringStream);
    wrkStr := StringStream.DataString;
  finally
    StringStream.Free
  end;
  pc := pchar(Pincode + wrkStr);
  PClen := StrLen(PC);
  FileStream := TFileStream.Create(encodedFilename, (fmCreate or fmShareExclusive));
  try
    ReAllocMem(HX, PClen * 2 + 1);
    StrToCodeHex(PC, HX);
    FileStream.Write(HX^, PClen * 2 + 1);
  finally
    ReAllocMem(HX, 0);
    FileStream.Free;
  end;
  Richedit1.Clear; // nur zwecks Demo des anschl.Decrypt-Erfolges gelöscht
end;

procedure TForm1.DeCryptButtonClick(Sender: TObject);
var
  PC, HX: PChar;
  FileStream: TFileStream;
  StringStream: TStringStream;
  fsize: cardinal;
  temp: String;
begin
  FileStream := TFileStream.Create(encodedFilename, fmOpenRead or fmShareExclusive);
  try
    fsize := Filestream.Size;
    setlength(temp, fsize);
    HX := Pchar(temp);
    FileStream.Read(HX^, fsize);
  finally
    FileStream.free;
  end;
  ReAllocMem(PC, fsize div 2 + 1);
  try
    if CodeHexToStr(PChar(PinCode), PC, HX) then
    begin
      StringStream := TStringStream.create(StrPas(PC));
      try
        Richedit1.plaintext := false;
        Richedit1.lines.LoadFromStream(StringStream);
      finally
        StringStream.free;
      end
    end
    else
      Showmessage('Cant decode ' + PC[0]);
  finally
    ReAllocMem(PC, 0);
  end;
end;
  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 14:28 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