자료실 유틸

Windows 파일 무결성 확인: PowerShell SHA-256 해시 비교 방법

첨부파일 1

다운로드한 ZIP이나 펌웨어 파일이 배포자가 제공한 파일과 같은지 확인할 때 SHA-256 해시를 비교할 수 있습니다. Windows PowerShell의 Get-FileHash로 계산할 수 있으며, 이 실습에는 별도의 해시 프로그램을 설치할 필요가 없습니다.

첨부 ZIP에는 내용이 같은 두 파일과 한 바이트가 다른 파일, 한국어 안내서가 들어 있습니다. 실제 펌웨어가 아닌 작은 텍스트 샘플이므로 장비에 기록할 필요 없이 PC에서 비교할 수 있습니다.

1. 파일 하나의 SHA-256 확인

시작 메뉴에서 PowerShell을 열고 아래 명령의 경로를 실제 파일 위치로 바꿉니다. 일반적으로 읽기 권한이 있는 파일은 관리자 권한 없이 확인할 수 있습니다.

Get-FileHash -LiteralPath 'C:\Downloads\firmware.bin' -Algorithm SHA256 -ErrorAction Stop

결과의 Hash 항목이 SHA-256 값입니다. 파일 경로에 공백이 있어도 따옴표 안에 넣으면 됩니다. -LiteralPath는 대괄호 같은 문자를 와일드카드로 해석하지 않고 경로 그대로 처리합니다. Microsoft Get-FileHash 공식 문서

비교할 때는 배포자가 어떤 파일에 대해 어떤 알고리즘으로 계산했는지 확인하세요. ZIP 파일의 해시와 압축을 푼 BIN 파일의 해시는 비교 대상이 다릅니다.

2. 첨부 샘플로 같은 파일과 달라진 파일 구별하기

첨부 ZIP을 새 폴더에 풀고, 압축을 푼 폴더에서 PowerShell을 엽니다. 현재 폴더에 README-KO.mdsample 폴더가 보이는지 확인한 뒤 아래 명령을 붙여 넣습니다.

$originalHash = (Get-FileHash -LiteralPath '.\sample\demo-original.txt' -Algorithm SHA256 -ErrorAction Stop).Hash
$renamedHash = (Get-FileHash -LiteralPath '.\sample\demo-renamed.txt' -Algorithm SHA256 -ErrorAction Stop).Hash
$changedHash = (Get-FileHash -LiteralPath '.\sample\demo-changed.txt' -Algorithm SHA256 -ErrorAction Stop).Hash
$originalHash -eq $renamedHash
$originalHash -eq $changedHash

결과는 차례대로 True, False입니다. 이 명령은 파일을 읽어 비교하며 내용을 수정하지 않습니다.

샘플 원본과의 관계 기대 결과
demo-original.txt 비교 기준 파일 기준 해시
demo-renamed.txt 이름만 다르고 바이트 내용은 동일 원본과 일치
demo-changed.txt 내용 중 한 바이트가 다름 원본과 불일치

첨부의 SHA256SUMS.txt에는 샘플별 계산값을 기록했습니다. PowerShell의 -eq 문자열 비교는 기본적으로 대소문자를 구별하지 않으므로, 해시를 대문자로 표시하는 도구와 소문자로 표시하는 도구의 결과를 비교할 때도 쓸 수 있습니다. Microsoft 비교 연산자 문서

3. 배포자가 공개한 값과 비교하기

파일 제공자의 공식 다운로드 페이지에서 대상 파일의 SHA-256을 복사합니다. 아래 첫 줄의 안내 문구를 실제 64자리 해시로 바꾸고 파일 경로도 맞춥니다.

$expectedHash = 'PASTE_THE_PUBLISHED_SHA256_HERE'.Trim()
$actualHash = (Get-FileHash -LiteralPath 'C:\Downloads\firmware.bin' -Algorithm SHA256 -ErrorAction Stop).Hash
$actualHash -eq $expectedHash

True는 계산한 값과 비교 기준이 일치한다는 뜻입니다. False라면 파일명·버전·플랫폼·알고리즘과 다운로드 완료 여부부터 확인합니다. 비교 기준에 공백이나 줄바꿈이 섞였는지도 살펴보세요.

해시가 맞는다고 파일의 제작자나 실행 안전성까지 확인되는 것은 아닙니다. 파일과 기준 해시를 함께 바꿀 수 있는 경로라면 두 값이 일치해도 출처를 신뢰할 근거가 부족합니다. 실제 배포물은 공식 배포 경로와 제공되는 서명 검증 방법도 함께 확인하세요.

4. 자주 헷갈리는 비교 조건

  • 파일 이름만 바꾸거나 다른 폴더로 복사해도 바이트 내용이 같으면 해시는 같습니다.
  • 텍스트를 편집기로 다시 저장하면 줄바꿈, 문자 인코딩, BOM 때문에 화면상 내용이 같아 보여도 해시가 달라질 수 있습니다.
  • 압축을 새로 만든 ZIP은 내부 파일이 같아도 압축 설정이나 메타데이터가 달라져 해시가 바뀔 수 있습니다.
  • 해시가 다르면 비교한 바이트 내용이 다릅니다. 해시 값만으로 어느 위치가 왜 달라졌는지는 알 수 없습니다.

5. 첨부 구성과 관련 글

  • README-KO.md: 한국어 사용 안내.
  • sample/: 동일 내용·이름 변경·한 바이트 변경 실습 파일 세 개.
  • SHA256SUMS.txt: 샘플과 Python 예제의 SHA-256 기록.
  • hash_demo.py: Python 표준 라이브러리로 같은 비교를 수행하는 선택 실습. Python이 설치되어 있으면 py hash_demo.py로 실행합니다.

개발 관점의 검증 절차는 펌웨어 배포 파일 검증: CRC·SHA-256·전자서명·버전의 역할에서 설명합니다. 압축 파일 검사와 복원은 7-Zip 사용 안내도 참고하세요.

작성 기준: 2026-09-17. 첨부 샘플의 해시는 PowerShell과 Python으로 교차 확인했습니다. 실제 배포물의 서명 검증이나 장치 펌웨어 업데이트를 수행하는 예제는 아닙니다.

목록으로

처리 중입니다...

잠시만 기다려주세요.