Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [XE2] Datei verschlüsseln funktioniert nicht. (https://www.delphipraxis.net/163244-%5Bxe2%5D-datei-verschluesseln-funktioniert-nicht.html)

RWarnecke 21. Sep 2011 11:24

[XE2] Datei verschlüsseln funktioniert nicht.
 
Hallo zusammen,

ich habe mich strikt an dieses Beispiel gehalten um eine XML-Datei zu verschlüsseln. Beim Kompilieren und bei der Programmausführung werden keine Fehler angezeigt. Wenn ich jetzt eine Datei abspeichere und dann wieder öffne, so wie es in dem Beispiel beschrieben ist, dann wird mir angezeigt Invalid decryption.

Ich habe es als 32bit Anwendung unter XE2 kompiliert. Kann es jemand nachvollziehen und mir erklären, wo eventuell der Fehler liegt ?

Luckie 21. Sep 2011 11:30

AW: [XE2] Datei verschlüsseln funktioniert nicht.
 
Wenn Code vor Delphi2009 entstanden ist, sind die Hauptverdächtigen für mich immer zu erst String und Unicode. Da in dem Code nicht explizit AnsiString verwendet wurde, werden die Strings unter XE2 als WideStrings interpretiert.Und das kann an Stellen wie hier:
Delphi-Quellcode:
procedure ProtectString(var Value: String);
begin
  FillChar(Pointer(Value)^, Length(Value), 0);
end;
zu Problemen führen. (Ob das jetzt hier der Fall ist, weiß ich jetzt nicht.)

Union 21. Sep 2011 11:35

AW: [XE2] Datei verschlüsseln funktioniert nicht.
 
Eine Anleitung findest Du hier genau wie die wichtigsten Gründe warum es fehlschlagen kann:

Zitat:

any code that:
  • Assumes that SizeOf(Char) is 1
  • Assumes that the Length of a string is equal to the number of bytes in the string
  • Writes or reads strings from some persistent storage or uses a string as a data buffer

Und das trifft ja alles auf den von Dir verwendeten Code von 2005 zu.

RWarnecke 21. Sep 2011 11:43

AW: [XE2] Datei verschlüsseln funktioniert nicht.
 
Hallo Michael,

danke für Deinen Hinweis. Ich habe jetzt alle Strings zu AnsiString gemacht und schon funktioniert es. Hätte ich auch selber drauf kommen können.:wall: Aber manchmal sieht man den Wald vor lauter Bäumen nicht.


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