2008-10-28 2 views
8

저는 작은 FAT16 파일 시스템으로 작업하고 있으며 구성 정보를 저장하는 불규칙한 XML 파일에 대한 CRC 값을 생성하려고합니다. 데이터가 변경되거나 손상된 경우 CRC가 파일이 원래 상태인지 계속 확인할 수 있어야합니다.CRC가 파일을 확인합니다.

질문은 어떻게 파일의 CRC 값을 변경하지 않고 CRC 값을 파일에 넣을 수 있습니까? 몇 가지 해결책을 생각해 볼 수는 있지만이 문제에 대한 표준 솔루션이 있어야한다고 생각합니다.

답변

8

파일의 끝에 CRC 값을 추가 할 수 있습니다. 그런 다음 검사 할 CRC 값을 나중에 계산할 때 마지막 4 바이트를 생략하십시오.

5

헤더를 정의하고 헤더를 제외한 모든 CRC를 생성 한 다음 값을 헤더에 넣습니다.

0

이렇게 할 방법이 없습니다. 파일의 첫 번째 x 바이트 (CRC는 32 비트 정수를 사용하므로 4 바이트)는 CRC를 포함 할 수 있으며 CRC를 계산할 때 처음 4 바이트 이후의 바이트 만 고려할 수 있습니다.

다른 해결책은 CRC를 파일 이름에 포함시키는 것입니다. 따라서 MyFile.Config는 MyFile.CRC1234567.Config가 될 것입니다.

1

한 가지 해결책은 dsofile.dll을 사용하여 파일에 확장 속성을 추가하는 것입니다. CRC 값 (문자열로 변환 됨)을 확장 파일 속성으로 저장할 수 있습니다. 그렇게하면 파일 구조가 변경되지 않습니다.

dsofile.dll은 ActiveX dll이므로 다양한 언어에서 호출 할 수 있지만 Windows에서 실행되도록 제한합니다. dsofile.dll에 대한 자세한 내용은 다음과 같습니다. http://support.microsoft.com/kb/224351

+0

dsofile.dll은 '구조적 저장소'파일에서만 작동합니다. –

4

일반적인 해결책은 다른 파일을 사용하는 것입니다. 각 파일 옆에는 확장자가 다른 동일한 파일 이름의 파일이 있습니다. 예 : foobar.txt 및 foobar.txt.md5 (또는 .crc).

1

나는 파일 자체에 CRC를 저장하지 않을 것이다. 나는 당신의 프로그램이 사용하는 하나의 파일 (XML 형식을 사용할 것임)을 파일 이름과 관련 CRC 값 목록과 함께 가질 것이다. 복잡하게 만들 필요가 없습니다.

4

통신 프로토콜에 널리 사용되는 일반적인 솔루션은 CRC 필드를 0으로 설정하고 CRC를 계산 한 다음 0 대신 배치하는 것입니다. 검사 코드는 역순으로 처리해야합니다. CRC를 읽고 0을 필드에서 CRC를 계산하고 비교합니다.

또한 파일 체크섬의 경우 CRC 대신 MD5를 사용하는 것이 좋습니다.

관련 문제