2013-02-08 2 views
0

내 이미지 파일을 모두 저장하는 저장소가 있습니다. 중복 된 이미지가 많아서 중복 된 이미지를 하나씩 삭제하고 싶습니다.두 바이너리 파일이 정확히 같은지 확인하는 방법

각 이미지 파일의 체크섬을 생성하고 파일 이름을 체크섬으로 변경하면 파일 이름을 검사하여 복제 된 파일이 있는지 쉽게 확인할 수 있습니다. 그러나 문제는 사용할 체크섬 알고리즘을 선택할 수 있는지 확신 할 수 없다는 것입니다. 예를 들어, MD5를 사용하여 체크섬을 생성하는 경우 체크섬이 동일하여 파일이 정확히 동일하다는 것을 정확하게 신뢰할 수 있습니까?

답변

0

이 개 다른 파일에 대해 같은 체크섬을 얻기의 가능성은 매우 희박하지만, 절대적으로 (Pigeonhole principle) 보장 될 수 없다 :

또한, 여기에 매우 비슷한 질문에 대한 응답을 참조하십시오. GIT가 Linux를 비롯한 소프트웨어 개발 소스 코드에 SHA-1 체크섬을 사용하고 알려진 문제를 일으킨 적이없는 경우 얼마나 슬림일지도 모른다고해서 내가 당신이 안전하다고 말할 수 있습니다. 나는 MD5 대신에 SHA-1을 사용할 것입니다. 왜냐하면 당신이 정말로 편집증 환자라면 MD5가 약간 더 좋기 때문입니다.

+1

"당신이 정말로 편집증이라면 약간 더 낫습니다"라고 말하면서 감사합니다 :) 감사합니다. –

+0

SHA-1은 MDB가 128 비트 인 반면 SHA-1은 160 비트입니다. 따라서 SHA-1의 결과는 더 독특 할 것이지만 계산은 약간 더 오래 걸립니다. 해시를 원한다면 SHA-256과 같은 것을 사용할 수 있습니다. SHA-256은 더 길며 계산 속도가 더욱 느려집니다. – neelsg

0

2 단계 절차를 따르는 것이 가장 좋습니다. 먼저 모든 파일에 대해 체크섬을 계산하십시오. 체크섬이 다른 경우 파일이 동일하지 않은 것입니다. 동일한 체크섬을 가진 파일을 찾은 경우 실제로는 동일하면 100 % 확신하도록 비트 단위 비교를 수행 할 방법이 없습니다. 이것은 사용 된 해싱 알고리즘에 관계없이 유지됩니다.

당신이 얻을 수있는 것은 엄청나게 많은 시간을 절약 할 수 있습니다. 가능한 모든 파일 쌍을 비트 단위로 비교하는 것은 영원히 그리고 하루가 걸릴 것이기 때문에 가능한 후보자들로 가득 찬 손을 꽤 쉽게 비교할 수 있습니다.

관련 문제