![]() |
Binäre Datei lesen und validieren
Hallo,
in meinem Thread ( ![]() Ich möchte, dass mein Programm merkt, wenn man eine Datei öffnet, die nicht das eigentliche Format hat. Ich habe mir dazu eine ganz einfach Möglichkeit ausgedacht, hoffe aber dass ihr bessere Ideen habt. Derzeit schreibe ich immer am Anfang und am Ende eine bestimmte Zahl (83423). Beim auslesen prüfe ich dann, ob diese beiden Zahlen vorhanden und korrekt sind. Wenn nicht ist die Datei in einem falschen Format Habt ihr dazu eventuell ein paar Anregungen ? :) |
AW: Binäre Datei lesen und validieren
Hallo,
du möchtest also beim Lesen einer Datei wissen, ob du diese auch tatsächlich gespeichert hast. Verstehe ich das richtig? Also spontan würde mir dann ein Hash einfallen. Du berechnest nach einem bestimmten Algoritmus, einen Hashwert über den Inhalt deiner Daten (Als einfaches Beispiel zählst du die Anzahl der 'e' in der Datei, speicherst diesen Wert mit in der Datei). Wenn du die Datei wieder ausliest, überprüfst du die Anzahl. Stimmt diese nicht überein, lehnts du die Datei ab. mfg frank |
AW: Binäre Datei lesen und validieren
Zitat:
![]() ![]() |
AW: Binäre Datei lesen und validieren
kommt darauf an was Du erreichen willst.
Für's Erkennen sollte Deine Methode hinreichend sein. Wenn du auch das Format verifizieren willst, könntest Du z.B. den 13 und 7letzten Datensatz mit einem genau definierten Inhalt schreiben. (also brauchen wir mind. 14 Datensätze) Soll jeder Datensatz verifiziert werden würde ich hierfür Prüfsummen nutzen. Gruß K-H |
AW: Binäre Datei lesen und validieren
Zitat:
Erkennung : Zum Beispiel : "Gif89" Magic am Anfang schreiben Konsistenz : Checksumme über die Datei bilden. (Schütz vor Veränderungen im kleinen Rahmen) Sicherheit : Checksumme bilden und Checksumme in unterschiedlicher Ausprägung in der Datei speichern. (So kann verhindert werden, dass einer die Datei patched und die Checksumme gleich mit) "Ganz Sicher" : (Gibt es zwar nicht) aber Verschlüsselung per AES oder vergleichbares... Mavarik |
AW: Binäre Datei lesen und validieren
Hey,
danke für die Zahlreichen Tipps :) Ich werde beides umsetzen. Eine Variable in den Header, um festzustellen, ob der Typ passt und eine Checksumme, die ich dann irgendwie berechne :) Da fällt mir bestimmt was ein :) Dankeschön! |
AW: Binäre Datei lesen und validieren
Eine Checksumme an sich brauchst du nicht wirklich. Checksummen werden für Datenintegrität verwendet, was hier ja ned der Fall ist.
Einfach ne Kennung am Anfang der Datei packen und beim Auslesen nachschauen, ob sie vorhanden ist.. as simple as that. Öffne ne (kleine) Exe Datei im Texteditor und du wirst merken, die ersten zwei Zeichen sind "MZ" was die initialien des Entwicklers dieses Formats (PE - portable executable files - exe/dll) ist. Könnte auch "MZ " sein.. So viel dazu |
AW: Binäre Datei lesen und validieren
Ich benutze z.B. für Binärdateien nur noch Streams, um diese dann per Filestream zu Speichern
oder per Blobstream in der DB zu Speicerhn etc. Das ist für mich am universellsten. Zusätzlich kann man damit sehr einfach schon vor dem Anfang der eigentlichen Nutzdaten noch FileVersion, Magic number und was dir sonst noch so einfällt schreiben. Jeweils sxhreibt man immer die aktuelle Fileversion beim Speichern. Das hat den Vorteil das man beim Zurücklesen erstmal Version etc. kontrollieren kann, und bei Bedarf beim weiteren Lesen der Daten auf die Änderungen in den Versionen reagieren kann. Z.B. neue Datenfelder in der neuen Version generieren und/oder nicht mehr vorhandene Datenfelder per Dummyread im Stream überlesen. So kann man sehr bequem nicht nur Testen ob man das überhaupt die richtige Dateiversion hat, man bekommt noch eine sehr sichere und einfache Verarbeitung für die verschiedenen Dateiversionen die man über die Jahre mal produziert gratis dazu. Rollo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:15 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 by Thomas Breitkreuz