SHA-256 값이 같으면 두 파일의 바이트가 같다고 봐도 됩니다
SHA-256은 아무리 큰 파일이라도 256비트(32바이트) 요약값 하나로 줄이는 해시 함수입니다. 화면에는 보통 16진수 64자리로 적습니다. 같은 바이트열을 넣으면 언제 어디서 계산해도 같은 값이 나오고, 한 바이트만 바뀌어도 64자리 대부분이 전혀 다른 값으로 바뀝니다. 그래서 배포처가 알려 준 SHA-256 값과 내가 받은 파일의 값이 같으면, 파일이 내려받는 중에 깨지거나 다른 파일로 바뀌지 않았다고 판단합니다.
이 도구는 위쪽 A 칸에 파일이나 글자를 넣으면 바로 SHA-256을 계산하고, B 칸에 붙여 넣은 기준값과 64자리를 8자리씩 나란히 놓고 대조합니다. 파일은 4 MiB씩 나누어 브라우저 안에서 읽기 때문에 크기 제한이 없고, 몇 GB짜리 설치 이미지도 진행률을 보며 계산할 수 있습니다. 파일 내용과 계산 결과는 서버로 보내지 않습니다.
기준값 칸에는 64자리 값 하나뿐 아니라 SHA256SUMS 같은 체크섬 목록 전체를 붙여 넣어도 됩니다. 목록에서 같은 값이 있는 줄, 없으면 파일 이름이 같은 줄을 찾아 대조합니다. 값이 다르면 그 원인으로 흔한 것들(끝 줄바꿈, 윈도우 줄바꿈, 유니코드 조합 방식, 다른 해시 알고리즘의 값)을 먼저 맞춰 보고 알려 줍니다.
해시를 대조해야 하는 때
해시 대조는 "이 파일이 원래 그 파일과 같은가"를 몇 초 만에 확인하는 방법입니다. 파일을 한 바이트씩 비교하려면 원본이 내 손에 있어야 하지만, 해시는 64자리만 있으면 됩니다. 다음과 같은 상황에서 특히 쓸모가 있습니다.
- 운영체제 이미지·설치 파일을 받은 뒤: 리눅스 배포판이나 개발 도구는 내려받기 페이지에 SHA-256 값이나 SHA256SUMS 파일을 함께 올립니다. 미러 서버에서 받았거나 내려받기가 중간에 끊겼다가 이어졌다면 값부터 맞춰 보는 편이 안전합니다. 우분투의 공식 안내도 SHA256SUMS로 이미지를 확인한 뒤 그 목록의 서명까지 확인하라고 설명합니다.
- 백업·복사한 파일이 원본과 같은지 볼 때: 외장 디스크, NAS, 클라우드 동기화로 옮긴 파일은 이름과 크기가 같아도 내용이 깨졌을 수 있습니다. B 칸을 '다른 파일'로 바꾸고 원본과 사본을 함께 넣으면 두 값을 대조하고, 다르면 처음 달라지는 바이트 위치까지 찾아 줍니다.
- 파일을 주고받은 뒤 같은 파일인지 확인할 때: 보낸 사람이 자기 쪽에서 계산한 64자리를 함께 알려 주면, 받은 사람은 파일만 넣어 같은지 확인할 수 있습니다. 일부 메신저와 SNS는 사진·동영상을 다시 압축해 보내므로 이런 경우에는 값이 달라집니다.
- 개발·배포 작업에서 산출물을 비교할 때: 같은 소스로 만든 빌드 결과가 정말 같은지, 웹 페이지의 integrity 속성에 넣을 값이 맞는지, API 문서의 예시 해시가 내 구현과 같은지 확인할 때 씁니다.
- 글자를 같은 방식으로 처리했는지 확인할 때: 서명·토큰을 만들기 전 단계에서 문자열 해시가 다른 프로그램과 같은지 볼 때, 줄바꿈 한 바이트나 유니코드 조합 차이가 원인인 경우가 많습니다. 이 도구는 그런 차이를 바꿔 가며 맞는 경우를 찾아 줍니다.
쓰는 법
- A 칸에서 파일을 고르거나 끌어 놓습니다. 글자의 해시를 보려면 글자로 바꾸고 입력합니다. 파일은 고르는 즉시, 글자는 입력하는 대로 계산합니다.
- B 칸에 배포처의 SHA-256 값을 붙여 넣습니다. 체크섬 목록 전체를 붙여 넣거나, SHA256SUMS 같은 목록 파일을 '목록 파일 열기'로 불러와도 됩니다. 두 파일을 비교하려면 B 칸을 다른 파일로 바꿉니다.
- 판정 줄에 '일치합니다' 또는 '다릅니다'가 나옵니다. 아래 대조판은 64자리를 8자리씩 여덟 묶음으로 나누어 윗줄에 계산값, 아랫줄에 기준값을 놓고 다른 글자를 강조합니다.
- 값이 다르면 아래 원인 목록을 봅니다. 글자 모드에서 끝 줄바꿈 같은 차이로 기준값과 맞는 경우를 찾으면 '이 방식으로 계산'을 눌러 그대로 다시 계산할 수 있습니다.
- 계산값을 쓰려면 복사 형식(소문자·대문자·Base64)을 고르고 'A 값 복사'를 누릅니다.
직접 확인할 수 있는 예시값
아래 값은 이 도구와 Node.js crypto, macOS의 sha256sum으로 같은 결과가 나오는 것을 확인한 값입니다. 화면에서 같아 보이는 글자도 바이트가 다르면 값이 완전히 달라진다는 점을 볼 수 있습니다. 표에서 ↵는 줄바꿈(0A), ␍↵는 윈도우 줄바꿈(0D 0A)입니다.
| 입력 | 바이트 | SHA-256 | 설명 |
|---|---|---|---|
(빈 글자) | 0 | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 | 아무것도 없는 0바이트 입력입니다. 빈 파일도 같은 값입니다. |
abc | 3 | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad | NIST 예시 문서의 첫 예시입니다. |
abc↵ | 4 | edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb | 끝에 줄바꿈(0A) 한 바이트가 더 붙었습니다. |
hello | 5 | 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 | printf hello, echo -n hello의 결과와 같습니다. |
hello↵ | 6 | 5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03 | echo hello | sha256sum의 결과와 같습니다. |
hello␍↵ | 7 | cd2eca3535741f27a8ae40c31b0c41d4057a7a7b912b33b9aed86485d1c84676 | 윈도우 줄바꿈(0D 0A)으로 끝난 줄입니다. |
[BOM]hello | 8 | 7489ebbcc2a00056ddaaaac190bce473e5c03696ea1bd8ed83cf59a174283862 | 앞에 UTF-8 BOM(EF BB BF)이 붙은 파일 내용입니다. |
가 | 3 | 64ee5293d31bc58b72d76ae9a86a902e90442428e29f24f4ecb257ba841cdd36 | 완성형(NFC) '가' 한 글자, 3바이트입니다. |
가 | 6 | a0d2271e0fe8929d025eb859cde49251ba70c86abb76123f03f8d8eda1c98939 | 첫가끝 조합(NFD) '가', 6바이트입니다. 화면에서는 위와 똑같이 보입니다. |
마지막 두 줄은 같은 '가'입니다. 한국어 맥(macOS)은 파일 이름을 첫가끝 조합(NFD)으로 저장하는 경우가 있어서, 파일 이름을 복사해 해시를 만들면 윈도우에서 만든 값과 다를 수 있습니다. 글자 모드의 정규화 단추(NFC·NFD)로 두 방식을 바꿔 계산해 볼 수 있습니다.
기준값으로 붙여 넣을 수 있는 형식
배포처마다 해시를 적는 방식이 다릅니다. B 칸은 아래 형식을 모두 읽고, 한 줄에 64자리 16진수가 있으면 그 줄의 파일 이름도 함께 읽습니다. 여러 줄을 붙여 넣으면 줄마다 따로 읽어 목록으로 다룹니다.
| 형식 | 예 | 설명 |
|---|---|---|
| 64자리 16진수 | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad | 가장 흔한 표기입니다. 대문자와 소문자는 같은 값으로 봅니다. |
| 8자리씩 띄운 대문자 | BA7816BF 8F01CFEA 414140DE 5DAE2223 B00361A3 96177A9C B410FF61 F20015AD | NIST 예시 문서처럼 8자리 단어로 끊은 값입니다. 공백·쌍점·하이픈을 빼고 읽습니다. |
| sha256sum 목록 | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad abc.txt | 값, 공백, 모드 글자(공백 또는 *), 파일 이름 순서입니다. SHA256SUMS 파일이 이 형식입니다. |
| BSD 꼴(--tag) | SHA256 (abc.txt) = ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad | sha256sum --tag, shasum --tag가 쓰는 꼴입니다. |
| OpenSSL | SHA256(abc.txt)= ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad | openssl dgst -sha256의 출력입니다. OpenSSL 3은 SHA2-256으로 적습니다. |
| PowerShell 표 | SHA256 BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD C:\Users\me\Downloads\abc.txt | Get-FileHash 출력 줄입니다. 값은 대문자이고, 경로에서 파일 이름만 씁니다. |
| Base64 | ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0= | 32바이트를 44글자로 적은 값입니다. |
| SRI(integrity) | sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0= | 웹 페이지 script·link 태그의 integrity 속성 표기입니다. |
16진수 길이가 64자리가 아니면 다른 해시일 가능성이 큽니다. 32자리는 MD5, 40자리는 SHA-1, 56자리는 SHA-224, 96자리는 SHA-384, 128자리는 SHA-512의 길이입니다. 이 도구는 SHA-256만 계산하므로 그런 값을 넣으면 어떤 알고리즘으로 보이는지와 내 컴퓨터에서 그 값을 계산하는 명령을 알려 줍니다.
내 컴퓨터에서 같은 값을 확인하는 명령
브라우저 계산 결과를 운영체제 명령으로 한 번 더 확인할 수도 있습니다. 아래 명령의 '파일이름' 자리에 실제 파일 이름을 넣습니다. 이름에 공백이 있으면 큰따옴표로 감쌉니다.
| 환경 | 명령 | 알아 둘 점 |
|---|---|---|
| Windows PowerShell | Get-FileHash 파일이름 | 알고리즘을 적지 않으면 SHA256으로 계산합니다. 값은 대문자로 나옵니다. |
| Windows 명령 프롬프트 | certutil -hashfile 파일이름 SHA256 | 끝에 알고리즘 이름 SHA256을 꼭 붙입니다. |
| macOS | shasum -a 256 파일이름 | shasum은 -a를 빼면 SHA-1로 계산하므로 -a 256을 붙입니다. |
| Linux | sha256sum 파일이름 | 값, 공백 두 칸, 파일 이름 순서로 출력합니다. |
| 목록으로 검사 | sha256sum -c --ignore-missing SHA256SUMS | 목록에 있는 파일마다 OK 또는 FAILED를 출력합니다. --ignore-missing은 내려받지 않은 파일을 건너뜁니다. |
글자 해시가 맞지 않는 흔한 이유
파일 해시는 바이트를 그대로 읽으니 헷갈릴 일이 적지만, 글자 해시는 화면에 보이지 않는 바이트 때문에 자주 어긋납니다. 대부분 아래 다섯 가지 중 하나입니다.
| 원인 | 바이트 차이 | 이 도구에서 맞추는 법 |
|---|---|---|
| echo의 끝 줄바꿈 | 0A 하나가 더 붙음 | '끝에 줄바꿈 하나'를 켭니다. 터미널에서는 echo -n이나 printf를 쓰면 줄바꿈이 붙지 않습니다. |
| 윈도우 줄바꿈 | 줄마다 0A 대신 0D 0A | 줄바꿈을 CRLF로 바꿉니다. 브라우저 입력 칸은 줄바꿈을 LF로 바꿔 담습니다. |
| UTF-8 BOM | 맨 앞에 EF BB BF | BOM이 붙은 파일은 파일 모드로 확인합니다. 원인 목록이 BOM 차이를 찾으면 알려 줍니다. |
| 한글 조합 방식 | '가'가 3바이트(NFC) 또는 6바이트(NFD) | 정규화를 NFC 또는 NFD로 바꿉니다. 기본값은 입력 그대로입니다. |
| 앞뒤 공백 | 공백 20, 탭 09 | 입력 칸에서 지웁니다. 이 도구는 공백을 자동으로 지우지 않습니다. |
기준값이 있으면 이 다섯 가지와 그 조합을 차례로 바꿔 계산하고, 가장 적게 바꾼 경우부터 일치하는지 봅니다. 그래서 "끝에 줄바꿈 하나를 더하면 기준값과 일치합니다"처럼 원인을 바로 짚어 줍니다. 대소문자가 다른 글자는 서로 다른 바이트이므로 바꿔 보지 않습니다.
그림 지문 읽는 법
64자리를 한 자씩 읽어 비교하는 일은 생각보다 틀리기 쉽습니다. 그래서 OpenSSH는 서버 열쇠의 지문을 작은 그림으로도 보여 주는 VisualHostKey 기능을 두고 있고, 이 도구의 그림 지문도 같은 방식(drunken bishop)을 씁니다.
- 가로 17칸, 세로 9칸 판의 가운데에서 출발합니다.
- 32바이트를 앞에서부터 읽고, 한 바이트를 아래쪽 비트부터 2비트씩 네 번 써서 한 걸음씩 대각선으로 움직입니다. 첫 비트가 1이면 오른쪽, 0이면 왼쪽, 둘째 비트가 1이면 아래, 0이면 위입니다. 판 끝에 닿으면 그 자리에 머뭅니다.
- 여러 번 지나간 칸일수록 진하게 칠합니다. 동그라미는 출발점, 마름모는 128걸음을 마친 도착점입니다.
두 그림이 한눈에 다르면 값도 다릅니다. 그러나 그림이 비슷해 보인다고 값이 같다고 확정할 수는 없습니다. 판정은 언제나 64자리 대조로 내리고, 그림은 눈으로 빠르게 훑어보는 보조 수단으로 씁니다.
자주 틀리는 경우
- 목록의 다른 줄을 복사함: SHA256SUMS에는 버전·운영체제·CPU별 파일이 여러 줄 있습니다. 한 줄만 복사하기보다 목록 전체를 붙여 넣으면 이 도구가 같은 값이나 같은 이름의 줄을 찾아 줍니다.
- 내려받기가 끝나지 않은 파일: 크기가 배포처 안내보다 작거나 .crdownload·.part 같은 임시 이름이면 값이 다를 수밖에 없습니다.
- 이름 뒤에 (1)이 붙은 파일: 같은 파일을 두 번 받으면 브라우저가 이름에 (1)을 붙입니다. 이름은 해시에 들어가지 않으므로 내용이 같으면 값도 같습니다. 이 도구는 목록에서 이름을 찾을 때 (1)과 대소문자를 무시합니다.
- 압축을 풀었다가 다시 묶은 파일: 안에 든 파일이 같아도 압축 방식·시각 정보가 달라져 압축 파일의 해시는 원본과 다릅니다.
- 파일 내용을 글자 칸에 붙여 넣음: 텍스트 파일의 해시를 확인할 때 내용을 복사해 붙여 넣으면 줄바꿈·BOM·인코딩이 바뀔 수 있습니다. 파일의 해시는 파일 모드로 확인합니다.
- 다른 알고리즘의 값과 비교함: 같은 페이지에 MD5·SHA-1·SHA-512가 함께 적혀 있으면 길이를 먼저 봅니다. SHA-256은 64자리입니다.
한계와 주의
- 값이 일치한다는 것은 두 바이트열이 같다는 뜻입니다. 파일이 안전하다거나 작성자가 믿을 만하다는 뜻은 아닙니다.
- 해시와 파일을 같은 서버에서 받았다면, 서버가 뚫렸을 때 둘 다 바뀌었을 수 있습니다. 그래서 우분투 같은 배포처는 SHA256SUMS 파일에 GPG 서명을 붙이고, 서명까지 확인하라고 안내합니다. 이 도구는 서명을 확인하지 않습니다.
- 이 도구는 SHA-256만 계산합니다. MD5와 SHA-1은 일부러 같은 해시를 만드는 충돌이 실제로 만들어졌고(SHA-1은 2017년 Google과 CWI가 공개), NIST는 SHA-1을 2030년 말까지 쓰지 않도록 정리하겠다고 발표했습니다. 위·변조 확인에는 SHA-256 이상을 씁니다.
- 계산은 기기의 처리 속도에 따라 초당 수십~수백 MB 정도입니다. 몇 GB 파일은 시간이 걸리고, 계산 중에 탭을 닫으면 멈춥니다. 휴대폰에서 클라우드에만 있는 파일은 기기가 내려받기를 마쳐야 읽을 수 있습니다.
- 글자 모드는 UTF-8로만 바이트를 만듭니다. EUC-KR·Shift_JIS 같은 다른 인코딩으로 저장된 글은 파일 모드로 확인합니다.
- 그림 지문은 눈으로 보는 보조 수단이며 판정에 쓰지 않습니다.
출처
기준일 NIST FIPS 180-4와 SHA-256 예시 문서, GNU coreutils·Microsoft·OpenSSH 설명서와 소스, 우분투 안내는 2026년 10월 22일에 원문으로 확인했습니다. 예시 표의 값은 이 도구, Node.js crypto, macOS sha256sum으로 같은 결과가 나오는지 확인했고, 그림 지문은 같은 32바이트로 ssh-keygen이 그린 그림과 일치하는지 대조했습니다.
- 01NIST — FIPS 180-4 Secure Hash Standard (SHS)SHA-256 정의, 2015년 8월 발행
- 02NIST — SHA-256 예시 계산(SHA256.pdf)abc와 448비트 메시지의 중간값과 결과, 8자리 대문자 단어 표기
- 03sha256sum(1) — GNU coreutils 설명서출력 줄 형식, --tag, -c, --ignore-missing
- 04Microsoft Learn — Get-FileHash기본 알고리즘 SHA256, 대문자 출력 예시
- 05Microsoft Learn — certutil-hashfile InFile [HashAlgorithm], 지원 알고리즘 목록
- 06Ubuntu — How to verify your Ubuntu downloadsha256sum -c SHA256SUMS와 SHA256SUMS.gpg 서명 확인
- 07OpenSSH 소스 — sshkey.c fingerprint_randomart17 × 9 판, 바이트마다 2비트씩 네 걸음, 출발점 S·도착점 E
- 08OpenBSD 설명서 — ssh_config(5) VisualHostKey열쇠 지문을 그림으로도 보여 주는 설정
- 09NIST — NIST Retires SHA-1 Cryptographic Algorithm2022년 12월 15일 발표, 2030년 12월 31일까지 정리
- 10Google Security Blog — Announcing the first SHA1 collision2017년 2월, Google과 CWI 암스테르담이 실제 충돌을 공개
- 11W3C — Subresource Integrityintegrity 속성의 sha256-·sha384- 뒤 Base64 표기
- 12Unicode — UAX #15 Unicode Normalization FormsNFC·NFD 정규화
자주 묻는 질문
파일을 고르면 서버로 올라가나요?
아니요. 파일은 이 브라우저 안에서 4 MiB씩 읽어 계산하며, 파일 내용이나 계산한 값을 서버로 보내지 않습니다. 계산이 끝나면 화면의 값만 남습니다.
몇 GB짜리 ISO 파일도 확인할 수 있나요?
네. 파일 전체를 한 번에 메모리에 올리지 않고 조각으로 나눠 읽기 때문에 크기 제한이 없습니다. 다만 기기 속도에 따라 초당 수십~수백 MB로 계산하므로 큰 파일은 시간이 걸리고, 그동안 진행률과 남은 시간을 보여 줍니다.
값이 일치하면 파일이 안전한가요?
일치는 내 파일과 기준값이 가리키는 파일의 바이트가 같다는 뜻입니다. 기준값이 공식 배포처의 것인지, 파일 자체가 안전한지는 따로 확인해야 합니다. 배포처가 체크섬 목록에 서명을 제공하면 서명까지 확인하는 것이 좋습니다.
대문자로 적힌 값과 비교해도 되나요?
네. 16진수의 대문자와 소문자는 같은 값으로 봅니다. 8자리마다 띄운 값이나 쌍점으로 구분한 값도 구분 기호를 빼고 64자리로 읽습니다.
터미널에서 만든 해시와 글자 해시가 다른 이유는 무엇인가요?
echo는 끝에 줄바꿈 한 바이트를 붙이므로 echo hello와 이 도구의 hello는 값이 다릅니다. 기준값을 붙여 넣으면 이 도구가 끝 줄바꿈·윈도우 줄바꿈·유니코드 조합 차이를 바꿔 가며 맞는 경우를 찾아 알려 줍니다.
SHA256SUMS 목록 전체를 붙여 넣어도 되나요?
네. 여러 줄을 붙여 넣으면 줄마다 값과 파일 이름을 읽고, 내 파일과 같은 값이 있는 줄을 찾습니다. 같은 값이 없으면 이름이 같은 줄과 대조해 어느 줄과 다른지 보여 줍니다. 목록 파일을 끌어 놓거나 '목록 파일 열기'로 불러와도 됩니다.
40자리나 128자리 값은 무엇인가요?
16진수 40자리는 SHA-1, 128자리는 SHA-512 값의 길이입니다. 이 도구는 SHA-256만 계산하므로 그런 값을 넣으면 어떤 알고리즘으로 보이는지와 Windows·macOS·Linux에서 그 값을 계산하는 명령을 알려 줍니다.
두 파일이 같은지 확인하려면 어떻게 하나요?
B 칸을 '다른 파일'로 바꾸고 두 파일을 각각 넣으면 두 SHA-256 값을 대조합니다. 값이 다르면 크기 차이와 처음 달라지는 바이트 위치도 알려 줍니다.