私は小さな FAT16 ファイルシステムで作業しており、構成情報を格納する個々の XML ファイルの CRC 値を生成したいと考えています。データが変更または破損した場合に備えて、CRC をチェックして、ファイルがまだ元の状態にあることを確認できるようにしたいと考えています。
問題は、ファイル自体の CRC 値を変更せずに、CRC 値をファイルに入れるにはどうすればよいかということです。解決策はいくつか考えられますが、この問題にはかなり標準的な解決策が必要だと思います。
私は小さな FAT16 ファイルシステムで作業しており、構成情報を格納する個々の XML ファイルの CRC 値を生成したいと考えています。データが変更または破損した場合に備えて、CRC をチェックして、ファイルがまだ元の状態にあることを確認できるようにしたいと考えています。
問題は、ファイル自体の CRC 値を変更せずに、CRC 値をファイルに入れるにはどうすればよいかということです。解決策はいくつか考えられますが、この問題にはかなり標準的な解決策が必要だと思います。
ファイルの末尾に CRC 値を追加できます。その後、チェックのために後で CRC 値を計算するときに、最後の 4 バイトを省略します。
ヘッダーを定義し、ヘッダーを除くすべての CRC を生成してから、値をヘッダーに入れます。
通信プロトコルで広く使用されている一般的な解決策は、CRC フィールドを 0 に設定し、CRC を計算してから 0 の代わりに配置することです。チェック コードは逆のプロセスを実行する必要があります。つまり、CRC を読み取り、フィールドをゼロにし、 CRC と比較します。
また、ファイルのチェックサムについては、CRC ではなく MD5 を強くお勧めします。
一般的な解決策は、異なるファイルを使用することです。各ファイルと並んで、拡張子が異なる同じファイル名のファイルを単純に作成します。例: foobar.txt および foobar.txt.md5 (または .crc)。
1 つの解決策は、dsofile.dll を使用して拡張プロパティをファイルに追加することです。CRC 値 (文字列に変換) を拡張ファイル プロパティとして保存できます。そうすれば、ファイルの構造を変更しません。
dsofile.dll は ActiveX dll であるため、さまざまな言語から呼び出すことができますが、Windows での実行に限定されます。dsofile.dll の詳細については、http: //support.microsoft.com/kb/224351を参照してください。
ファイル自体にCRCを保存しません。プログラムが使用する単一のファイル (私は XML 形式を使用します) を、ファイル名とそれに関連付けられた CRC 値のリストとともに作成します。そんなに複雑にする必要はありません。
これを行う方法はありません。ファイルの最初の x バイト (CRC は 32 ビット整数を使用するため、4 バイト) に CRC を含めることができ、CRC を計算するときに、最初の 4 バイトの後に続くバイトのみを考慮することができます。
別の解決策は、CRC をファイル名に含めることです。したがって、MyFile.Config は MyFile.CRC1234567.Config になります。