Ich arbeite mit einem kleinen FAT16-Dateisystem und möchte CRC-Werte für einzelne XML-Dateien generieren, die Konfigurationsinformationen speichern. Wenn sich die Daten ändern oder beschädigt sind, möchte ich in der Lage sein, die CRC zu überprüfen, um festzustellen, dass die Datei noch im ursprünglichen Zustand ist.
Die Frage ist, wie setze ich den CRC-Wert in die Datei, ohne den CRC-Wert der Datei selbst zu ändern? Ich kann mir ein paar Lösungen vorstellen, aber ich denke, es muss eine ziemlich standardisierte Lösung für dieses Problem geben.
Sie könnten den CRC-Wert an das Ende der Datei anhängen. Wenn Sie später den CRC-Wert für die Überprüfung berechnen, lassen Sie die letzten vier Bytes weg.
Die gängige Lösung, die häufig in Kommunikationsprotokollen verwendet wird, besteht darin, das CRC-Feld auf 0 zu setzen, den CRC zu berechnen und dann anstelle von 0 zu setzen. Der Prüfcode sollte den umgekehrten Vorgang ausführen - CRC lesen, Feld auf Null setzen , berechne die CRC und vergleiche.
Auch für eine Dateiprüfsumme empfehle ich dringend MD5 anstelle von CRC.
Eine Lösung wäre, dsofile.dll zu verwenden, um Ihren Dateien erweiterte Eigenschaften hinzuzufügen. Sie können den CRC-Wert (in eine Zeichenfolge konvertiert) als erweiterte Dateieigenschaft speichern. Auf diese Weise ändern Sie nicht die Struktur der Datei.
dsofile.dll ist eine ActiveX-DLL, so dass sie aus verschiedenen Sprachen aufgerufen werden kann, jedoch beschränkt sie sich auf die Ausführung unter Windows. Hier finden Sie weitere Informationen zu dsofile.dll: Ссылка
Es gibt keine Möglichkeit, dies zu tun. Sie könnten die ersten x-Bytes (CRC verwendet eine 32-Bit-Ganzzahl, also 4 Bytes) der Datei enthalten die CRC, und dann bei der Berechnung Ihrer CRC, könnten Sie nur die Bytes, die nach diesen ersten 4 Bytes kommen.
Eine andere Lösung wäre, den CRC in den Dateinamen aufzunehmen. Also MyFile.Config wäre MyFile.CRC1234567.Config.
Tags und Links file filesystems checksum crc