본문 바로가기
더밸류노트
IT / 소프트웨어

받은 파일이 진짜인지 SHA-256으로 확인하기 — 설치된 node.exe를 공식 해시와 직접 대조

윈도우 기본 명령 certutil -hashfile로 설치된 Node.js 실행 파일의 SHA-256을 계산해 nodejs.org 공식 SHASUMS256.txt와 대조하고, 글자 하나만 다른 두 파일의 해시가 완전히 달라지는 것까지 직접 시험한 화면으로 정리했습니다.

3분 읽기
목차04
  1. 1. 해시(지문)가 뭔지 30초 정리
  2. 2. 실제로 대조해 보기 — 설치된 node.exe vs 공식 해시 목록
  3. 3. 글자 하나만 바꾸면? — 직접 시험
  4. 받은 파일 확인 순서

프로그램 다운로드 페이지에서 가끔 SHA-256 이라는 긴 문자열을 볼 수 있다. 파일이 받는 도중 깨지거나 누가 바꿔치기하지 않았는지 확인하라고 공개하는 "지문" 이다. 윈도우에는 이걸 확인하는 명령이 기본으로 들어 있다. 그래서 이 PC에 이미 설치된 프로그램(Node.js)의 실행 파일로 직접 대조해 봤고, 글자 하나만 바뀌어도 지문이 완전히 달라지는지도 시험해 봤다.

1. 해시(지문)가 뭔지 30초 정리

  • 파일 내용을 넣으면 고정된 길이의 문자열이 나온다. SHA-256은 64자리 16진수다.
  • 같은 파일이면 언제 어디서 계산해도 같은 값이 나온다.
  • 내용이 한 글자라도 다르면 전혀 다른 값이 나온다.

그래서 배포처가 공개한 해시와 내가 받은 파일의 해시가 같으면, 내 파일은 배포처가 올린 파일과 똑같다고 볼 수 있다.

2. 실제로 대조해 보기 — 설치된 node.exe vs 공식 해시 목록

이 PC에는 Node.js가 설치돼 있다. Node.js는 버전마다 모든 배포 파일의 SHA-256을 SHASUMS256.txt 로 공개한다(다운로드 페이지에도 "signed SHASUMS" 확인 안내가 있다). 명령 프롬프트에서 아래 순서로 실행했다.

node -v
certutil -hashfile "C:\Program Files\nodejs\node.exe" SHA256
curl -s https://nodejs.org/dist/v24.11.0/SHASUMS256.txt | findstr "win-x64/node.exe"

certutil로 계산한 node.exe의 SHA-256과 nodejs.org 공식 SHASUMS256.txt의 win-x64/node.exe 값이 b7d912484d…9026e1로 같다

  1. node -v → v24.11.0. 공식 목록도 이 버전 것을 열어야 한다.
  2. certutil -hashfile 파일 SHA256 → 내 PC의 node.exe 해시가 나온다. b7d912484d42e7a0…a97a9026e1
  3. curl … | findstr → nodejs.org에 올라와 있는 공식 목록에서 win-x64/node.exe 줄만 뽑았다. 값이 완전히 같았다.

64자리를 눈으로 다 비교하기는 어렵다. 눈으로 볼 때는 앞 6자리(b7d912)와 뒤 6자리(9026e1) 부터 맞춰 보면 빠르지만, 확실하게 하려면 아래 4번처럼 PowerShell에 비교를 맡기는 게 낫다. 이 node.exe로 실제로 비교시켜 보니 True 가 나왔다.

참고로 설치 프로그램(MSI)으로 설치한 node.exe와 공식 목록의 win-x64/node.exe 가 같은 파일이라 이 비교가 성립했다. 보통은 내려받은 설치 파일 자체(예: node-v24.11.0-x64.msi)의 해시를 공식 목록의 해당 줄과 비교한다.

3. 글자 하나만 바꾸면? — 직접 시험

정말 한 글자 차이로 달라지는지, 내용이 거의 같은 메모 파일 두 개를 만들어 확인했다. 마지막 글자만 s 와 z 로 다르다.

echo 2026-10-18 meeting notes> note-a.txt
echo 2026-10-18 meeting notez> note-b.txt
certutil -hashfile note-a.txt SHA256
certutil -hashfile note-b.txt SHA256

한 글자만 다른 두 파일의 SHA-256. note-a는 5d3a4c7e…63413, note-b는 1c5b9467…5d25로 완전히 다르다

  • note-a.txt: 5d3a4c7edbcd0253…bfbaf63413
  • note-b.txt: 1c5b94672ce67f02…1f8be5d25

비슷한 구석이 하나도 없다. "조금 다르면 조금 다르게 나오는" 게 아니다. 그래서 해시가 같으면 같은 파일이라고 믿을 수 있다.

받은 파일 확인 순서

  1. 배포 페이지에서 공개된 SHA-256 값과 정확한 파일 이름·버전을 확인한다
  2. 명령 프롬프트에서 certutil -hashfile 받은파일 SHA256 실행
  3. 두 값이 같은지 본다. PowerShell이라면 다음처럼 비교를 맡길 수 있다
(Get-FileHash .\받은파일 -Algorithm SHA256).Hash -eq "공개된해시값"

결과가 True 면 같다. 대소문자는 신경 쓰지 않아도 된다. PowerShell의 -eq 는 대소문자를 구분하지 않는다.

주의할 점도 있다. 해시는 공개된 값이 믿을 수 있는 곳(공식 사이트)에 있을 때만 의미가 있다. 파일과 해시를 같은 수상한 곳에서 받았다면, 둘 다 바꿔치기됐을 수 있다.

명령 설명은 마이크로소프트 문서 certutil(-hashfile)과 Get-FileHash에 나와 있다.

2026년 10월 18일, 윈도우 11 Home 23H2에서 별도 프로그램 없이 기본 명령(certutil)만으로 확인했다.

참고 자료

  1. certutil - Microsoft Learn
  2. Get-FileHash - PowerShell 문서
  3. Download Node.js - nodejs.org

같은 카테고리의 글

04