다양한 운영체제에서 SHA-256 해시 계산하는 방법 정리

파일 검증 작업을 하다보면, 다운로드 받은 파일의 무결성(integrity)을 확인하기 위해 해시(hash) 값을 비교하는 경우가 많습니다. 특히 SHA-256 해시는 많은 소프트웨어 배포 사이트에서 표준적으로 제공하고 있는 대표적인 해시 알고리즘 중 하나입니다. 또한 단순히 파일뿐만 아니라, 특정 문자열에 대한 SHA-256 해시값을 얻고자 할 때도 있습니다. 이 글에서는 리눅스, 맥OS, 윈도우 환경에서 SHA-256 해시를 커맨드라인 도구로 간편하게 계산하는 방법을 설명하겠습니다.

1. SHA-256 해시란?

SHA-256은 SHA-2 알고리즘 계열의 해시 함수 중 하나로, 256비트 길이의 해시값을 생성합니다. 이 값은 일반적으로 16진수(HEX) 형태로 출력되며, 파일이나 문자열의 "지문"으로 사용됩니다. 같은 내용의 파일이나 문자열은 언제나 동일한 SHA-256 해시를 갖게 되며, 파일이 조금이라도 수정되면 완전히 다른 해시값을 얻게 되어 파일 무결성을 확인하는데 유용합니다.

2. 리눅스(Linux)에서 SHA-256 해시 계산하기

2-1. sha256sum 명령어 사용하기

리눅스의 많은 배포판에는 기본적으로 sha256sum이라는 유틸리티가 포함되어 있습니다. 이 도구는 파일에 대한 SHA-256 해시를 쉽게 구할 수 있습니다.

파일에 대한 SHA-256 해시 계산 예시:

sha256sum myfile.zip

위 명령을 실행하면 다음과 같이 출력됩니다:

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  myfile.zip

좌측의 긴 16진수 문자열이 myfile.zip의 SHA-256 해시값이며, 오른쪽에 파일 이름이 표시됩니다.

문자열에 대한 SHA-256 해시 계산 예시: sha256sum은 기본적으로 문자열을 직접 해싱하는 옵션이 따로 없으나, 다음과 같이 echo 명령과 파이프를 활용할 수 있습니다.

echo -n "Hello, World!" | sha256sum

출력 예:

a591a6d40bf420404a011733cfb7b190d62c65bf0bcf910a5169f6d7d7f16296  -

여기서 -n 옵션은 echo 명령이 문자열 뒤에 개행문자를 추가하지 않도록 하는 것으로, 실제 문자열만을 해싱하기 위해 중요합니다.

2-2. openssl 명령어 사용하기

만약 sha256sum이 없다면, openssl 유틸리티를 사용할 수도 있습니다.

파일 해시 계산:

openssl dgst -sha256 myfile.zip

출력 예:

SHA256(myfile.zip)= e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

문자열 해시 계산:

echo -n "Hello, World!" | openssl dgst -sha256

출력 예:

(stdin)= a591a6d40bf420404a011733cfb7b190d62c65bf0bcf910a5169f6d7d7f16296

3. 맥OS(Mac OS)에서 SHA-256 해시 계산하기

맥OS에서도 리눅스와 유사한 도구를 사용할 수 있습니다. shasum 명령어는 기본적으로 맥OS에 내장되어 있으며, 다양한 해시 알고리즘을 지원합니다.

3-1. shasum 명령어 사용하기

shasum 명령어에 -a 256 옵션을 주면 SHA-256 알고리즘을 사용합니다.

파일 해시 계산:

shasum -a 256 myfile.zip

출력 예:

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  myfile.zip

문자열 해시 계산:

echo -n "Hello, World!" | shasum -a 256

출력 예:

a591a6d40bf420404a011733cfb7b190d62c65bf0bcf910a5169f6d7d7f16296  -

맥OS에서도 openssl 명령어를 활용할 수 있습니다. 이는 리눅스와 동일한 방법으로 사용 가능합니다.

4. 윈도우(Windows)에서 SHA-256 해시 계산하기

윈도우 환경에서는 기본적으로 SHA-256 해시를 계산하는 명령어가 바로 떠오르지 않을 수 있지만, 다음과 같은 방법을 사용할 수 있습니다.

4-1. certutil 명령어 사용하기 (CMD/PowerShell 공통)

윈도우에 기본 포함된 certutil 툴을 통해 파일에 대한 해시 값을 구할 수 있습니다.

파일 해시 계산:

certutil -hashfile myfile.zip SHA256

출력 예:

SHA256 hash of myfile.zip:
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
CertUtil: -hashfile command completed successfully.

다만 certutil은 문자열에 대한 해시를 직접 계산하는 기능이 없습니다. 문자열에 대해서는 별도로 임시 파일을 만들어 해시를 확인하거나, 다른 스크립팅 방법을 사용할 수 있습니다.

예를 들어, echo 명령어를 사용하여 임시 텍스트 파일을 만든 뒤 해당 파일을 해싱하는 방법이 있습니다.

echo Hello, World! > temp.txt
certutil -hashfile temp.txt SHA256

출력 예:

SHA256 hash of temp.txt:
a591a6d40bf420404a011733cfb7b190d62c65bf0bcf910a5169f6d7d7f16296
CertUtil: -hashfile command completed successfully.

이후 del temp.txt로 임시파일을 삭제할 수 있습니다.

4-2. PowerShell의 Get-FileHash 명령어 사용하기

윈도우 10 이상에서는 PowerShell을 통해 Get-FileHash 명령어로 손쉽게 파일의 해시를 얻을 수 있습니다.

파일 해시 계산:

Get-FileHash myfile.zip -Algorithm SHA256

출력 예:

Algorithm       Hash                                           Path
---------       ----                                           ----
SHA256          E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649... C:\path\to\myfile.zip

문자열에 대한 해시는 Get-FileHash가 직접 지원하지 않지만, 문자열을 임시파일로 저장 후 처리하는 방식은 동일합니다.

예:

"Hello, World!" | Out-File temp.txt -Encoding ASCII
Get-FileHash temp.txt -Algorithm SHA256
Remove-Item temp.txt

5. 외부 도구 사용하기

만약 위의 기본 도구를 사용하기 어렵다면 외부 툴을 사용할 수도 있습니다.

  • Python 스크립트 활용:
    파이썬이 설치되어 있다면, 간단한 파이썬 원라이너로 SHA-256 해시를 계산할 수 있습니다.파일에 대해서는:
  • python3 -c "import hashlib; f=open('myfile.zip','rb'); print(hashlib.sha256(f.read()).hexdigest())"
  • echo -n "Hello, World!" | python3 -c "import sys, hashlib; print(hashlib.sha256(sys.stdin.read().encode()).hexdigest())"
  • 7-Zip 등의 도구:
    7-Zip의 7z 명령을 활용할 수도 있으나, 이는 조금 더 복잡하며 주로 sha1 체크에 특화된 명령이라 SHA-256에는 바로 적용하기 어려울 수 있습니다.

6. 주의사항

  • 문자열 해시 계산 시 echo 사용시 개행 문자(\n) 여부를 주의하세요. echo -n을 지원하지 않는 셸에서는 다른 방법을 사용해야 합니다.
  • 파일 해시 비교 시 공백, 대소문자 여부는 일반적으로 상관없습니다만, 정확성을 위해 같은 형식을 유지하는 것을 권장합니다.
  • 해시 계산 시 파일 크기에 따라 처리 시간이 걸릴 수 있으며, 대용량 파일의 경우 수십 초 정도 걸릴 수 있습니다.

결론

이 글에서는 리눅스, 맥OS, 윈도우에서 각각 SHA-256 해시를 계산하는 다양한 방법을 살펴보았습니다. sha256sum, shasum, openssl, certutil, Get-FileHash 등 상황에 따라 다양한 명령어를 사용하여 간편하게 해시값을 확인할 수 있습니다. 이러한 방법을 숙지해두면, 소프트웨어 검증, 보안 점검, 파일 무결성 확인 시 매우 유용하게 활용할 수 있습니다.

반응형