Uwe Raabe hat in einem seiner Blogbeiträge
https://www.uweraabe.de/Blog/2017/03...rd-encryption/ eine recht übersichtliche Implementierung der ZipCrypto Entschlüsselung präsentiert. Die Implementierung folgt, wie er auch selbst erläuterte, den originalen PKWare
Erläuterungen. Jetzt bin ich dabei mir das Thema insgesamt etwas genauer anzusehen, da ich gerne Konfigurationsdateien (einfache Inis) verschlüsselt speichern möchte. Erster Schritt war die TZip Komponente zu verwenden, und unverschlüsselt einfach nur die Ini-Datei zu zippen. Entpacken "on the fly" bzw. im Speicher mit Memorystreams geht auch gut, so daß keine Dateien als Laufzeitartefakte entstehen. Jetzt wollte ich zum Spaß mal ZipCrypto anwenden, daß Embarcadero das als eine von zwei möglichen Verfahren nennt, und AES256 ganz sicher aufwendiger für einen simplen Test wird. Lange Rede kurzer Sinn: Es kommt im 32Bit Compilat zu einem Integer-Überlauf, wenn in der Methode DecryptBuffer die Multiplikation durchgeführt wird:
Result := word(temp * (temp xor 1)) shr 8;
Klar ist der Code von 2017 mit Delphi 10.1 erstellt worden, aber zu Delphi 11.3 sind ja nun nicht so viele schlimme Dinge passiert...oder doch? Hat jemand eine Idee dazu? Uwe?
Sherlock