해시로 파일의 일부를 비교하는 방법은 무엇입니까?

해시로 파일의 일부를 비교하는 방법은 무엇입니까?

하나는 성공적으로 다운로드한 파일이고 다른 하나는 다운로드에 실패했는데(대형 파일의 처음 100MB만) 동일한 파일인 것으로 의심됩니다.

이를 확인하기 위해 해시를 확인하고 싶지만 다운로드에 실패한 파일의 일부만 가지고 있으므로 처음 몇 메가바이트 정도만 해시하고 싶습니다.

어떻게 해야 하나요?

OS는 Windows이지만 cygwin과 MinGW가 설치되어 있습니다.

답변1

파일을 비교하기 위해 해시를 생성하는 것은 하나의 파일을 여러 파일과 비교하거나 여러 파일을 서로 비교할 때 의미가 있습니다.

두 파일을 한 번만 비교할 때는 의미가 없습니다. 해시를 계산하는 노력은 적어도 파일을 살펴보고 직접 비교하는 것만큼 높습니다.

효율적인 파일 비교 도구는 다음과 같습니다 cmp.

cmp --bytes $((100 * 1024 * 1024)) file1 file2 && echo "File fragments are identical"

dd두 파일의 임의 부분(반드시 처음부터는 아님)을 비교하기 위해 이를 결합할 수도 있습니다 . 예:

cmp \
    <(dd if=file1 bs=100M count=1 skip=1 2>/dev/null) \
    <(dd if=file2 bs=100M count=1 skip=1 2>/dev/null) \
&& echo "File fragments are identical"

답변2

정확히 시도해 볼 수는 없어서 죄송합니다. 하지만 이 방법은 효과가 있을 것입니다

dd if=yourfile.zip of=first100mb1.dat bs=100M count=1
dd if=yourotherfile.zip of=first100mb2.dat bs=100M count=1

이렇게 하면 두 파일의 처음 100MB를 얻을 수 있습니다.

이제 해시를 얻으세요:

sha256sum first100mb1.dat && sha256sum first100mb2.dat 

직접 실행할 수도 있습니다.

dd if=yourfile.zip bs=100M count=1 | sha256sum 
dd if=yourotherfile.zip bs=100M count=1 | sha256sum 

답변3

모두가 Unix/Linux 경로를 사용하는 것처럼 보이지만 Windows 표준 명령을 사용하면 두 파일을 쉽게 비교할 수 있습니다.
FC /B file file2

FC는 지금까지 만들어진 모든 Windows NT 버전에 존재합니다. 그리고 (제 기억이 맞다면) DOS에도 있었습니다.
속도가 좀 느리기는 하지만 일회용으로 사용하기에는 문제가 되지 않습니다.

답변4

나는 그것이 Bash에 대해 말하는 것을 알고 있지만 OP에는 Windows가 있다고 명시되어 있습니다. Windows 솔루션을 원하거나 요구하는 사람을 위해 두 파일을 비교할 수 있는 Hex Editor인 HxD라는 프로그램이 있습니다. 파일 크기가 다른 경우 사용 가능한 부분이 동일한지 알려줍니다. 그리고 필요한 경우 현재 선택된 항목에 대해 체크섬을 실행할 수 있습니다. 무료이며 다음에서 다운로드할 수 있습니다.HxD 웹사이트. 나는 저자와 아무런 관련이 없으며 몇 년 동안 그것을 사용해 왔습니다.

관련 정보