質問

小さなFAT16ファイルシステムを使用していますが、構成情報を保存する個々のXMLファイルのCRC値を生成したいです。データが変更または破損した場合、CRCをチェックして、ファイルがまだ元の状態にあることを確認できるようにしたいと思います。

質問は、ファイル自体のCRC値を変更せずに、どのようにCRC値をファイルに入れるのですか?いくつかの解決策が考えられますが、この問題にはかなり標準的な解決策が必要だと思います。

役に立ちましたか?

解決

CRC値をファイルの末尾に追加できます。その後、後でチェックするためにCRC値を計算するとき、最後の4バイトを省略します。

他のヒント

ヘッダーを定義し、ヘッダー以外のすべてのCRCを生成してから、ヘッダーに値を入れます。

一般的な解決策は、異なるファイルを使用することです。各ファイルの横には、同じファイル名で拡張子の異なるファイルがあります。例:foobar.txtおよびfoobar.txt.md5(または.crc)。

通信プロトコルで広く使用されている一般的な解決策は、CRCフィールドを0に設定し、CRCを計算してから0の代わりに配置することです。チェックコードは逆のプロセスを実行する必要があります-CRCを読み取り、フィールドをゼロにします、CRCを計算して比較します。

また、ファイルのチェックサムについては、CRCではなくMD5を強くお勧めします。

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になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top