저는 작은 FAT16 파일 시스템으로 작업하고 있으며 구성 정보를 저장하는 불규칙한 XML 파일에 대한 CRC 값을 생성하려고합니다. 데이터가 변경되거나 손상된 경우 CRC가 파일이 원래 상태인지 계속 확인할 수 있어야합니다.CRC가 파일을 확인합니다.
질문은 어떻게 파일의 CRC 값을 변경하지 않고 CRC 값을 파일에 넣을 수 있습니까? 몇 가지 해결책을 생각해 볼 수는 있지만이 문제에 대한 표준 솔루션이 있어야한다고 생각합니다.
저는 작은 FAT16 파일 시스템으로 작업하고 있으며 구성 정보를 저장하는 불규칙한 XML 파일에 대한 CRC 값을 생성하려고합니다. 데이터가 변경되거나 손상된 경우 CRC가 파일이 원래 상태인지 계속 확인할 수 있어야합니다.CRC가 파일을 확인합니다.
질문은 어떻게 파일의 CRC 값을 변경하지 않고 CRC 값을 파일에 넣을 수 있습니까? 몇 가지 해결책을 생각해 볼 수는 있지만이 문제에 대한 표준 솔루션이 있어야한다고 생각합니다.
파일의 끝에 CRC 값을 추가 할 수 있습니다. 그런 다음 검사 할 CRC 값을 나중에 계산할 때 마지막 4 바이트를 생략하십시오.
헤더를 정의하고 헤더를 제외한 모든 CRC를 생성 한 다음 값을 헤더에 넣습니다.
이렇게 할 방법이 없습니다. 파일의 첫 번째 x 바이트 (CRC는 32 비트 정수를 사용하므로 4 바이트)는 CRC를 포함 할 수 있으며 CRC를 계산할 때 처음 4 바이트 이후의 바이트 만 고려할 수 있습니다.
다른 해결책은 CRC를 파일 이름에 포함시키는 것입니다. 따라서 MyFile.Config는 MyFile.CRC1234567.Config가 될 것입니다.
한 가지 해결책은 dsofile.dll을 사용하여 파일에 확장 속성을 추가하는 것입니다. CRC 값 (문자열로 변환 됨)을 확장 파일 속성으로 저장할 수 있습니다. 그렇게하면 파일 구조가 변경되지 않습니다.
dsofile.dll은 ActiveX dll이므로 다양한 언어에서 호출 할 수 있지만 Windows에서 실행되도록 제한합니다. dsofile.dll에 대한 자세한 내용은 다음과 같습니다. http://support.microsoft.com/kb/224351
일반적인 해결책은 다른 파일을 사용하는 것입니다. 각 파일 옆에는 확장자가 다른 동일한 파일 이름의 파일이 있습니다. 예 : foobar.txt 및 foobar.txt.md5 (또는 .crc).
나는 파일 자체에 CRC를 저장하지 않을 것이다. 나는 당신의 프로그램이 사용하는 하나의 파일 (XML 형식을 사용할 것임)을 파일 이름과 관련 CRC 값 목록과 함께 가질 것이다. 복잡하게 만들 필요가 없습니다.
통신 프로토콜에 널리 사용되는 일반적인 솔루션은 CRC 필드를 0으로 설정하고 CRC를 계산 한 다음 0 대신 배치하는 것입니다. 검사 코드는 역순으로 처리해야합니다. CRC를 읽고 0을 필드에서 CRC를 계산하고 비교합니다.
또한 파일 체크섬의 경우 CRC 대신 MD5를 사용하는 것이 좋습니다.
dsofile.dll은 '구조적 저장소'파일에서만 작동합니다. –