![]() |
Strings kodiert in ini-Datei
Hallo zusammen!
Zum Kodieren von Strings habe ich bisher immer so was wie
Delphi-Quellcode:
benutzt, was auch soweit gut klappt.
Eintrag[i] := CHR(Ord(Eintrag[i]) XOR Werte[i]);
Beim Speichern von derart kodierten Strings in winer ini-Datei hatte ich aber schon mehrmals Probleme - so wird z.B. ein Space-Zeichen am Anfang oder Ende beim Einlesen der ini-Datei "verschluckt" bzw bei einem #0 wird der String halt beim Einlesen beendet. Gibt es Möglichkeiten, solche Probleme von Vornherein auszuschließen?! Muß ich eine andere Kodierungsart wählen? Vielen Dank für Eure Hilfe! |
AW: Strings kodiert in ini-Datei
Dann mußt du es eben so kodieren verschlüsseln, daß solche Zeichenkonstellationen nicht entstehen?
XOR alleine ist aber nicht wirklich für sowas geeignet, da man nicht direkt auf solche Probleme eingehen kann, um ein bestimmtes ausgabeformat zu erziehlen. Oder du kodierst es eben, nach der Verschlüsselung, in einem Format, welches keine Probleme bereitet. HEX, Base64 usw. Möglich wäre auch XOR über den Text, dann die Bytes halbieren und jeweils als untere 4 Bit z.B. zusammen mit einem "OR $60" abspeichern |
AW: Strings kodiert in ini-Datei
Hab's mit HEX probiert ... klappt soweit gut ...
Vielen Dank für die Hilfe! |
AW: Strings kodiert in ini-Datei
Hier wäre noch eine Möglichkeit
Delphi-Quellcode:
verwendet Procedure LoadMemIniFileCrypted(INI: TMemInifile; const fn: String; Key: String); var s: String; sl: TStringList; st: TStringStream; RC4Reader: TRC4StreamReader; begin if not FileExists(fn) then Exit; sl := TStringList.Create; st := TStringStream.Create; try RC4Reader := TRC4StreamReader.Create(TFileStream.Create(fn, fmOpenRead or fmShareDenyWrite), Key); try st.CopyFrom(RC4Reader, RC4Reader.Size); st.Position := 0; s := st.ReadString(st.Size); sl.Text := s; INI.SetStrings(sl); finally RC4Reader.Free; end; finally st.Free; sl.Free; end; end; Procedure SaveMemIniFileCrpyted(INI: TMemInifile; const fn: String; Key: String); var s: String; sl: TStringList; st: TStringStream; fs: TFileStream; RC4Writer: TRC4StreamWriter; begin sl := TStringList.Create; st := TStringStream.Create; try INI.GetStrings(sl); s := sl.Text; st.WriteString(s); st.Position := 0; RC4Writer := TRC4StreamWriter.Create(TFileStream.Create(fn, fmCreate or fmShareDenyWrite), Key); try RC4Writer.CopyFrom(st, st.Size); finally RC4Writer.Free; end; finally st.Free; sl.Free; end; end; ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz