Menu
Coddy logo textTech

체크섬이란 무엇인가요?

체크섬(checksum)은 파일이나 네트워크 패킷 같은 데이터 블록에서 계산해 데이터와 함께 저장하거나 전송하는 짧은 값입니다. 나중에 다시 계산해 두 값을 비교하면 데이터가 손상이나 전송 오류로 바뀌었는지 알 수 있습니다.

글쓴이: Kevin Spektor, 공동 창업자, CTO

업데이트: 2026년 9월 24일

체크섬보낸 쪽받은 쪽결과
바이트의 합 (mod 256)0707일치
CRC-327EBD8A8B7EBD8A8B일치

비트 하나를 뒤집으면 두 체크섬이 모두 바뀌어요. 두 글자의 자리를 바꾸면 바이트는 전부 그대로라서 합도 같아요. 순서에 따라 값이 달라지는 CRC-32만 알아차려요.

Ubuntu나 Debian 같은 Linux 배포판은 설치 이미지 옆에 SHA256SUMS라는 파일을 공개해요. 각 줄에는 64자짜리 문자열과 파일 이름이 있어요. 다운로드가 끝나면 받은 파일에 명령 하나를 실행해요. 같은 문자열이 출력되면 수십억 바이트가 모두 온전히 도착한 거예요. 도중에 비트 하나라도 뒤집혔다면 문자열은 완전히 다르게 나와요.

그 문자열이 체크섬이에요. 데이터가 바뀌면 함께 바뀌는 작은 요약값이죠.

체크섬은 어떻게 동작하나요

  1. 보내는 쪽이 데이터에 바이트 단위로 체크섬 알고리즘을 실행해 짧은 결과를 얻어요.
  2. 그 결과는 데이터와 함께 전송되거나 저장돼요. 네트워크 패킷의 헤더, ZIP 파일 안의 압축된 각 파일 옆, 다운로드 페이지 같은 곳이에요.
  3. 받는 쪽이 실제로 받은 데이터에 같은 알고리즘을 실행해요.
  4. 두 결과를 비교해요. 같으면 데이터는 거의 확실히 바뀌지 않은 거예요. 다르면 데이터가 손상된 것이고, 받는 쪽은 데이터를 거부하거나, 다시 요청하거나, 체크섬 오류를 표시해요.

체크섬은 손상을 감지할 뿐, 어느 바이트가 바뀌었는지 알려 주거나 복구하지는 못해요. 복구하려면 CD와 QR 코드에 쓰이는 리드 솔로몬 부호 같은 오류 정정 부호가 필요해요.

가장 단순한 체크섬은 모든 바이트를 더하고 합계의 마지막 8비트만 남기는 거예요. 아래 코드를 실행해서 이 방식이 어디서 통하고 어디서 실패하는지 보세요.

original  sum= 78  crc32=a1628836
flipped   sum= 80  crc32=a597580b
swapped   sum= 78  crc32=59dbf74b

글자 하나를 바꾸면 합계가 바뀌어요. 두 글자의 자리를 바꾸면 합계가 그대로예요. 덧셈은 순서를 따지지 않기 때문이죠. 그래서 바이트 합계는 100 대신 10을 지급하는 내용을 통과시켜요. CRC-32(순환 중복 검사)는 데이터를 하나의 긴 이진수로 보고 정해진 33비트 다항식으로 나눠요. 32비트 나머지는 모든 비트의 위치에 따라 달라지므로 자리 바꿈이 잡혀요. 위의 데모에서 직접 입력한 텍스트로 확인해 볼 수 있어요. CRC-32는 길이 32비트까지의 연속된 오류(버스트 오류)를 모두 잡아내요.

대표적인 체크섬 알고리즘

알고리즘크기쓰이는 곳
패리티 비트1비트직렬 연결, 패리티 메모리
룬(Luhn) 검사 숫자1자리신용카드 번호, IMEI 번호
인터넷 체크섬16비트IPv4, TCP, UDP 헤더
Adler-3232비트zlib 압축 형식
CRC-3232비트ZIP, gzip, PNG, 이더넷 프레임
MD5128비트예전 다운로드 페이지, 중복 파일 찾기
SHA-256256비트소프트웨어 다운로드, Linux 이미지, 비트코인

앞의 다섯 가지는 사고는 잡아내지만 공격자는 막지 못해요. 파일을 수정한 사람이 몇 바이트를 조정해서 CRC-32가 다시 일치하게 만들 수 있어요. MD5와 SHA-256은 같은 출력을 내는 두 입력을 찾는 것이 현실적으로 불가능하도록 설계된 암호학적 해시 함수예요. 하지만 MD5는 이미 깨졌고(2004년에 충돌이 공개됨) SHA-1도 깨졌기 때문에(2017년), 보안이 중요한 다운로드에는 SHA-256 이상을 써요. 우연한 손상을 잡는 데는 MD5도 여전히 충분해요.

체크섬 확인 방법

각 운영체제에는 기본 명령이 있어요.

# Windows (PowerShell)
Get-FileHash ubuntu.iso -Algorithm SHA256
# macOS
shasum -a 256 ubuntu.iso
# Linux
sha256sum ubuntu.iso

출력을 공식 다운로드 페이지의 값과 비교하세요. 대문자와 소문자는 상관없어요. Python에서는 hashlib로 같은 검사를 할 수 있고, 파일을 조각 단위로 읽으므로 6 GB 파일도 메모리에 한꺼번에 올릴 필요가 없어요.

a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
OK

hello world를 hello World로 바꾸고 다시 실행해 보세요. 체크섬의 모든 문자가 바뀌고, 마지막 줄에 Checksum mismatch가 출력돼요.

체크섬 오류란 무엇인가요?

체크섬 오류는 검사에 실패했다는 뜻이에요. 가지고 있는 데이터에서 계산한 값이 데이터와 함께 저장되거나 전송된 값과 일치하지 않는 것이죠. 데이터가 바뀌었거나, 저장된 체크섬이 손상된 거예요. 메시지와 해결 방법은 오류가 나타나는 곳에 따라 달라요.

부팅 시 CMOS 또는 BIOS 체크섬 오류

PC의 펌웨어(BIOS 또는 UEFI)는 부팅 순서와 시계 같은 설정을 작은 메모리에 보관하며, 컴퓨터 전원이 뽑혀 있는 동안에는 보통 CR2032인 코인 전지가 이 메모리를 유지해요. 그 설정의 체크섬이 설정 옆에 저장되어 있어요. 펌웨어는 부팅할 때마다 체크섬을 다시 계산하고, 값이 다르면 CMOS Checksum Error - Defaults Loaded 같은 메시지를 표시하고 공장 설정으로 되돌아가요.

흔한 원인은 약해지거나 다 된 전지이며, 특히 시계까지 초기화될 때 그래요. 설정을 저장하는 도중의 정전이나 점퍼로 CMOS를 초기화한 경우도 같은 결과를 내요. 해결 방법은 다음과 같아요.

  1. 설정 화면을 열어요(보통 PC가 켜질 때 Delete나 F2). 날짜, 시간, 바꿔 두었던 설정을 입력한 뒤 저장하고 종료해요(보통 F10). 메시지가 다시 나타나지 않으면 일회성 사건이었던 거예요.
  2. 전원을 완전히 껐다 켤 때마다 다시 나타난다면, 컴퓨터를 끄고 전원 코드를 뽑은 뒤 CR2032 전지를 교체해요.
  3. 메시지가 BIOS ROM checksum error나 Main BIOS checksum error처럼 펌웨어 자체를 가리킨다면 펌웨어 이미지가 손상된 거예요. 백업 BIOS 칩이 있는 메인보드는 자동으로 복구해요. 그렇지 않은 메인보드에서는 BIOS 복구 기능을 쓰거나 제조사 사이트에서 받은 펌웨어를 다시 플래시하되, 업데이트 도중에 전원을 끊지 마세요.

다운로드 후 체크섬 불일치

받은 파일의 SHA-256이 다운로드 페이지의 값과 일치하지 않는 경우예요. 파일이 불완전하거나 손상되었을 수 있고(연결 중단, 디스크 공간 부족), 다른 파일(다른 버전이나 다른 CPU 아키텍처)의 체크섬과 비교하고 있을 수도 있으며, 서로 다른 두 알고리즘을 비교하고 있을 수도 있어요. MD5 값은 16진수 32자, SHA-256 값은 64자예요. 드물게는 파일이 변조된 경우도 있어요.

알고리즘과 파일 이름을 확인한 뒤 공식 사이트에서 파일을 다시 받으세요. 공식 출처에서 새로 받은 파일도 여전히 일치하지 않는다면 실행하지 마세요. 패키지 관리자는 이 검사를 대신 해 줘요. pip은 내려받은 패키지가 고정된 해시와 다르면 THESE PACKAGES DO NOT MATCH THE HASHES를 출력하고 멈춰요.

ZIP, RAR, 7z 압축 파일의 체크섬 오류

압축 형식은 각 파일의 원래 내용에 대한 CRC-32를 저장해요. 압축을 풀 때 도구가 이를 다시 계산하며, 불일치를 WinRAR는 Checksum error로, 7-Zip은 CRC Failed로 보고해요. 암호화된 압축 파일에서는 비밀번호가 틀려도 같은 메시지가 나와요. 틀린 비밀번호로 복호화하면 쓰레기 데이터가 나오기 때문이에요. 압축 파일을 다시 받고, 분할 압축 파일(.part1.rar, .part2.rar)의 모든 부분이 있고 같은 업로드에서 온 것인지 확인하고, 비밀번호를 다시 입력하세요. WinRAR의 압축 파일 복구 명령은 복구 레코드와 함께 만든 압축 파일에서 가장 잘 동작하며, "손상된 파일 유지(Keep broken files)" 옵션을 쓰면 제대로 풀린 부분이라도 건질 수 있어요.

게임과 네트워크 도구의 체크섬 오류

게임은 자기 파일의 체크섬을 비교하므로, 업데이트가 일부만 되었거나 파일이 바뀌면 검사에 실패해요. Steam에서 "게임 파일 무결성 확인"을 실행하면 체크섬이 일치하지 않는 파일을 모두 다시 받아요. Wireshark에서 내 컴퓨터가 보내는 패킷에 뜨는 체크섬 경고는 보통 진짜 오류가 아니에요. Wireshark가 패킷을 이미 캡처한 뒤에 네트워크 카드가 체크섬을 채워 넣기 때문이에요.

흔한 오해

  • "체크섬이 일치하면 파일이 안전하다는 증거다." 파일이 공개된 값과 일치한다는 증거일 뿐이에요. 공격자가 웹사이트를 장악하면 둘 다 바꿀 수 있으며, 그래서 프로젝트들은 체크섬 파일에 키로 서명도 해요.
  • "체크섬으로 손상된 파일을 고칠 수 있다." 체크섬은 손상을 감지할 뿐이에요. 해결책은 멀쩡한 사본을 구하는 거예요.
  • "체크섬과 해시는 서로 다른 것이다." 체크섬은 하는 일을 가리키고, SHA-256 같은 해시 함수는 그 일을 할 수 있는 도구 중 하나예요.

다음 단계

해시 생성기에서 어떤 텍스트든 MD5, SHA-1, SHA-256 값을 계산해 보세요. 체크섬은 원시 데이터를 다루므로, 바이트란 무엇인지와 비트란 무엇인지가 실제로 무엇을 더하는지 설명해 줘요. 데이터베이스는 페이지 체크섬으로 디스크 손상을 잡아내며, 해시 테이블 시각화는 데이터에서 계산한 짧은 값의 또 다른 쓰임을 보여 줘요.

자주 묻는 질문

SHA-256도 체크섬인가요?
데이터를 검증하는 데 쓰일 때는 그래요. SHA-256은 암호학적 해시 함수이며, 파일에 대해 만들어 내는 64자짜리 값을 흔히 그 파일의 SHA-256 체크섬이라고 불러요. CRC-32보다 느리지만 의도적인 변경까지 막아 줘요. SHA-256 값이 같은 다른 파일을 현실적으로 만들어 낼 수 있는 사람이 없기 때문이에요.
체크섬 오류는 어떻게 해결하나요?
어디서 나타나느냐에 따라 달라요. 부팅할 때라면 BIOS 설정 화면을 열어 날짜와 설정을 확인하고 저장한 뒤 종료하고, 오류가 다시 나타나면 CMOS 코인 전지를 교체하세요. 다운로드 후나 압축 파일에서라면 공식 출처에서 파일을 다시 받고, 분할 압축 파일의 모든 부분이 있는지와 비밀번호가 맞는지 확인하세요.
체크섬 오류가 나는 원인은 무엇인가요?
체크섬을 계산한 시점과 검사한 시점 사이에 데이터가 바뀌었기 때문이에요. 흔한 원인은 중단된 다운로드, 고장 나 가는 디스크나 USB 메모리, 약해진 CMOS 전지, 설정이나 펌웨어를 기록하는 중의 정전, 암호화된 압축 파일의 잘못된 비밀번호예요.
체크섬은 왜 필요한가요?
저장 장치와 네트워크는 완벽하지 않아요. 전기 잡음, 전파 간섭, 닳은 플래시 메모리, 고장 나는 디스크 때문에 비트가 뒤집히고, 검사가 없으면 손상된 데이터가 아무도 모르게 사용돼요. 체크섬은 손상을 알아채서 데이터를 다시 보내거나 거부할 수 있게 해 주는 저렴한 방법이에요.
체크섬은 어떻게 생성하나요?
데이터에 체크섬 알고리즘을 실행해요. 파일이라면 Linux에서는 sha256sum file, macOS에서는 shasum -a 256 file, Windows PowerShell에서는 Get-FileHash file을 써요. Python에서는 hashlib.sha256(data).hexdigest()가 SHA-256 체크섬을, zlib.crc32(data)가 CRC-32를 돌려줘요.
Coddy programming languages illustration

Coddy로 코딩 배우기

시작하기