md5sum 계산에 문제가 있습니다. 나는 파일의 메타 데이터 (inode)를 보관하고 파일의 md5sum을 계산하고 설치 중에 sqlite db에 저장하는 복구 도구를 가지고 있습니다. 파일이 제거/삭제되면. 이 도구는 sqlite-db의 메타 데이터를 사용하여 삭제 된 파일을 복구합니다.이 파일을 복구합니다. 이제 복구 된 파일이 원래 파일과 정확히 동일해야합니다. 다음과 같이 복구 된 파일 md5sum을 다시 계산했습니다. 문제는 이상하게도 파일 수가 적어서 (고양이를 사용하여) 파일 내용이 정확히 동일하다는 것입니다 (삭제되기 전과 같습니다) & stat 명령은 동일한 출력 (다른 inode 번호 제외)을 표시하지만 md5sum은 다릅니다.동일한 파일 내용에 대해 다른 md5sum?
다음과 같은 두 개의 파일이 동일한 콘텐츠를 가지므로 - inode 번호가 다르면 md5sum에 영향을 미치지 않습니다.
764efa883dda1e11db47671c4a3bbd9e /test/hi1.txt
764efa883dda1e11db47671c4a3bbd9e /test/hi.txt
의견을 보내려면 어떻게해야합니까?
char file_location[512] = {0};
char md5_cmd[512], md5sum[34];
FILE *pf;
//some recovery stuff goes here...
//Recompute md5 of recovered file
memset(md5_cmd, '\0', 512);
sprintf(md5_cmd, "md5sum %s", file_location);
pf = popen(md5_cmd, "r");
if (!pf) {
fprintf(stderr,"Could not open pipe");
return;
}
// get data
fgets(md5sum, 34, pf);
if (pclose(pf) != 0)
fprintf(stderr, "Error: close Failed.");
fprintf(stdout, "Md5sum is %s", md5sum);
'볼 수있는 물건이 있으면 어떨까요? 제어 문자, 공백 대 탭, 한 줄 끝에 줄 바꿈? 파일에 대해 hexdump를 수행하고 16 진수를 비교합니다. – nos
동일한 내용의 파일이 동일한 MD5를 갖는 것이 왜 문제입니까? –
또는 다른 인코딩. MD5는 이진 표현에서 작동합니다. –