웹사이트 검색

Linux에서 MD5 체크섬을 사용하여 파일을 생성하고 확인하는 방법 알아보기


체크섬은 데이터의 올바른 숫자의 합으로 사용되는 숫자로, 나중에 저장 또는 전송 중에 데이터 오류를 감지하는 데 사용할 수 있습니다. MD5(Message Digest 5) 합계는 Linux 파일 시스템의 파일이나 문자열을 확인하기 위한 체크섬으로 사용될 수 있습니다.

MD5 합계는 특정 파일에 대해 MD5 알고리즘을 실행하여 생성된 128비트 문자열(숫자 및 문자)입니다. MD5 알고리즘은 해시 값이라고 하는 128비트 메시지 다이제스트를 생성하는 널리 사용되는 해시 함수이며, 특정 파일에 대해 생성하면 생성 횟수에 관계없이 모든 시스템에서 정확히 변경되지 않습니다.

일반적으로 동일한 문자열을 생성하는 두 개의 서로 다른 파일을 찾는 것은 매우 어렵습니다. 따라서 md5sum을 사용하면 다운로드한 파일이나 ISO가 원격 파일이나 ISO의 비트 단위 복사본인지 확인하여 디지털 데이터 무결성을 확인할 수 있습니다.

권장 읽기: 진행률 – Linux에서 (cp, mv, dd, tar 등) 명령의 진행 상황을 모니터링합니다.

Linux에서 md5sum 프로그램은 파일의 MD5 해시 값을 계산하고 확인합니다. 이는 GNU 핵심 유틸리티 패키지의 구성 요소이므로 모든 Linux 배포판은 아니더라도 대부분의 Linux 배포판에 사전 설치되어 제공됩니다.

아래에서 groups.cvs로 저장된 /etc/group의 내용을 살펴보세요.

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,aaronkilik
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:aaronkilik
floppy:x:25:
tape:x:26:
sudo:x:27:aaronkilik
audio:x:29:pulse
dip:x:30:aaronkilik

아래의 md5sums 명령은 다음과 같이 파일의 해시 값을 생성합니다.

md5sum groups.csv

bc527343c7ffc103111f3a694b004e2f  groups.csv

첫 번째 줄인 root:x:0:을 제거하여 파일의 내용을 변경한 다음 명령을 두 번째로 실행하는 경우 해시 값을 관찰해 보세요.

md5sum groups.csv

46798b5cfca45c46a84b7419f8b74735  groups.csv

이제 해시 값이 변경되어 파일 내용이 변경되었음을 알 수 있습니다.

이제 파일의 첫 번째 줄인 root:x:0:를 다시 넣고 이름을 group_file.txt로 바꾸고 아래 명령을 실행하여 해시 값을 다시 생성합니다.

md5sum groups_list.txt

bc527343c7ffc103111f3a694b004e2f  groups_list.txt

위 출력에서 해시 값은 파일 이름이 변경된 경우에도 원래 내용과 동일합니다.

중요: md5 합계는 파일 이름이 아닌 파일 콘텐츠만 확인/작동합니다.

groups_list.txt 파일은 groups.csv와 중복되므로 다음과 같이 파일의 해시 값을 동시에 생성해 보세요.

둘 다 동일한 해시 값을 갖는 것을 볼 수 있습니다. 이는 내용이 완전히 동일하기 때문입니다.

md5sum groups_list.txt  groups.csv 

bc527343c7ffc103111f3a694b004e2f  groups_list.txt
bc527343c7ffc103111f3a694b004e2f  groups.csv

파일의 해시 값을 텍스트 파일로 리디렉션하여 저장하고 다른 사람과 공유할 수 있습니다. 위의 두 파일에 대해 아래 명령을 실행하여 생성된 해시 값을 나중에 사용할 수 있도록 텍스트 파일로 리디렉션할 수 있습니다.

md5sum groups_list.txt  groups.csv > myfiles.md5

체크섬을 생성한 이후 파일이 수정되지 않았는지 확인하려면 다음 명령을 실행합니다. '확인'과 함께 각 파일의 이름을 볼 수 있습니다.

권장 읽기: Linux에서 메모리 사용량 기준 상위 15개 프로세스 찾기

-c 또는 --check 옵션은 md5sums 명령에 파일에서 MD5 합계를 읽고 확인하도록 지시합니다.

md5sum -c myfiles.md5

groups_list.txt: OK
groups.csv: OK

체크섬을 생성한 후에는 파일 이름을 바꿀 수 없으며, 그렇지 않으면 새 이름으로 파일을 확인하려고 할 때 “해당 파일 또는 디렉터리가 없습니다” 오류가 발생합니다.

예를 들어:

mv groups_list.txt new.txt
$ mv groups.csv file.txt
$ md5sum -c  myfiles.md5
md5sum: groups_list.txt: No such file or directory
groups_list.txt: FAILED open or read
md5sum: groups.csv: No such file or directory
groups.csv: FAILED open or read
md5sum: WARNING: 2 listed files could not be read

이 개념은 문자열에도 마찬가지로 적용됩니다. 아래 명령에서 -n은 후행 개행 문자를 출력하지 않음을 의미합니다.

echo -n "Tecmint How-Tos" | md5sum - 

afc7cb02baab440a6e64de1a5b0d0f1b  -
echo -n "Tecmint How-To" | md5sum - 

65136cb527bff5ed8615bd1959b0a248  -

이 가이드에서는 파일에 대한 해시 값을 생성하고 나중에 Linux에서 파일 무결성을 확인하기 위해 체크섬을 생성하는 방법을 보여주었습니다. MD5 알고리즘의 보안 취약점이 감지되었지만 MD5 해시는 특히 이를 생성한 당사자를 신뢰하는 경우 여전히 유용합니다.

따라서 파일 확인은 손상된 파일의 다운로드, 저장 또는 공유를 방지하기 위해 시스템에서 파일을 처리하는 데 있어 중요한 측면입니다. 마지막으로, 평소와 같이 아래 댓글 양식을 통해 도움을 요청하고, 이 게시물을 개선하기 위한 몇 가지 중요한 제안을 하실 수도 있습니다.