해시
해시(hash)는 어떤 데이터든 넣으면 정해진 길이의 '지문' 값을 만들어 주는 계산이에요. 한 글자만 바뀌어도 값이 완전히 달라져서 파일이 바뀌었는지 확인하거나 비밀번호를 안전하게 저장할 때 써요.
목차 보기
해시(hash)는 어떤 데이터든 넣으면 정해진 길이의 "지문" 값을 만들어 주는 계산이에요. 그 값을 해시값, 계산 규칙을 해시 함수라고 불러요. 사람마다 지문이 다르듯 데이터마다 해시값이 달라서, 파일이 바뀌었는지 확인하거나 비밀번호를 안전하게 저장할 때 써요.
한눈에 보기
- 같은 데이터는 언제 어디서 계산해도 같은 해시값이 나와요.
- "hello"와 "Hello"처럼 한 글자만 달라도 값이 완전히 달라져요. 직접 돌려서 확인했어요.
- 해시값에서 원래 데이터를 되돌릴 수는 없어요. 그래서 암호화와 달라요.
해시에는 어떤 성질이 있어요?
- 길이가 늘 같아요 — 한 글자든 10MB 파일이든 SHA-256 은 늘 16진수 64자예요.
- 같은 입력 → 같은 값 — 윈도우에서 계산하든 리눅스에서 계산하든 같아요.
- 조금만 달라도 전혀 다른 값 — 이걸 눈사태 효과라고 해요.
- 되돌릴 수 없어요 — 해시값만 보고 원래 내용을 알아낼 방법이 사실상 없어요.
직접 돌려 봤어요
2026년 10월 29일, 리눅스와 같은 명령을 쓰는 Git Bash 에서 실행한 결과예요.
$ echo -n "hello" | sha256sum 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824 *- $ echo -n "Hello" | sha256sum 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969 *- $ echo -n "" | sha256sum e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 *-
(끝의 *- 는 "파일 대신 입력을 이진 모드로 읽었다"는 표시예요.) 첫 글자 h 를 대문자로 바꿨을 뿐인데 64자가 통째로 달라졌어요. 빈 값을 넣어도 64자가 나와요.
이번엔 파일이에요. a.txt 에 "안녕하세요", b.txt 에 똑같은 내용, c.txt 에 마침표 하나를 더 넣었어요.
$ sha256sum a.txt b.txt c.txt 2c68318e352971113645cbc72861e1ec23f48d5baa5f9b405fed9dddca893eb4 *a.txt 2c68318e352971113645cbc72861e1ec23f48d5baa5f9b405fed9dddca893eb4 *b.txt 8b118d6741f7cfa1a7ee246d0dda39f2f00bf9fd207b4e6c7fad87a15434a513 *c.txt
내용이 같은 a 와 b 는 값이 같고, 마침표 하나 다른 c 는 전혀 달라요. 윈도우 도구로 같은 a.txt 를 계산해도 같은 값이 나왔어요.
PS> Get-FileHash .\a.txt -Algorithm SHA256 Algorithm : SHA256 Hash : 2C68318E352971113645CBC72861E1EC23F48D5BAA5F9B405FED9DDDCA893EB4 $ openssl dgst -sha256 a.txt SHA2-256(a.txt)= 2c68318e352971113645cbc72861e1ec23f48d5baa5f9b405fed9dddca893eb4
윈도우는 대문자로 보여 줄 뿐 같은 값이에요. 속도도 재 봤어요. 100MB 데이터를 SHA-256 으로 계산하는 데 0.28 · 0.29 · 0.29초 걸렸어요(3번).
해시는 어디에 써요?
| 쓰임 | 어떻게 |
|---|---|
| 파일 확인 | 내려받은 파일의 해시값을 배포처가 적어 둔 값과 비교해요. 같으면 중간에 바뀌지 않은 거예요 |
| 비밀번호 저장 | 비밀번호 대신 해시값을 저장해요. 털려도 원래 비밀번호가 바로 드러나지 않아요 |
| 중복 찾기 | 사진·파일의 해시가 같으면 같은 파일이에요 |
| 서명 확인 | 비밀 열쇠를 섞은 해시(HMAC)로 "우리가 보낸 메시지가 맞다"를 증명해요 |
| 블록체인 | 앞 블록의 해시를 다음 블록에 넣어 고치면 티가 나게 해요 |
내 파일 해시는 어떻게 확인해요?
| 운영체제 | 명령 |
|---|---|
| 윈도우(PowerShell) | Get-FileHash 파일이름 -Algorithm SHA256 |
| 윈도우(명령 프롬프트) | certutil -hashfile 파일이름 SHA256 |
| 맥 | shasum -a 256 파일이름 |
| 리눅스 | sha256sum 파일이름 |
나온 값을 배포처의 값과 앞 몇 자리만 보지 말고 끝까지 비교하세요. 대소문자는 신경 쓰지 않아도 돼요.
해시와 암호화는 뭐가 달라요?
| 구분 | 해시 | 암호화 |
|---|---|---|
| 되돌리기 | 안 돼요(한 방향) | 열쇠가 있으면 돼요(양방향) |
| 결과 길이 | 늘 같아요 | 원문 길이에 따라 달라져요 |
| 쓰는 곳 | 확인·비교 | 숨겼다가 다시 보기 |
자주 하는 오해
- MD5 도 괜찮다 — MD5 와 SHA-1 은 일부러 같은 해시값을 만드는 공격이 알려져 있어요. 보안 목적이면 SHA-256 이상을 쓰세요. (같은 "hello"의 MD5 는 32자: 5d41402abc4b2a76b9719d911017c592)
- 비밀번호는 SHA-256 한 번이면 안전하다 — 너무 빨라서 무작위 대입에 약해요. 비밀번호에는 솔트(사람마다 다른 덧붙임 값)를 섞고 일부러 느리게 만든 해시(bcrypt·Argon2 등)를 써요.
- 해시 = 해시태그 — SNS 의 #해시태그는 # 기호(hash)에서 온 이름일 뿐, 이 글의 해시와는 다른 말이에요.
퓨쳐인프라에서는
퓨쳐인프라 스크래핑 웹훅은 결과를 보낼 때 X-FI-Signature: sha256=… 머리글에 HMAC-SHA256 서명을 붙여요. 받는 쪽은 같은 비밀값으로 해시를 계산해 맞으면 "퓨쳐인프라가 보낸 게 맞다"고 믿을 수 있어요. 계산은 이런 식이에요(예시 비밀값).
$ echo -n '{"ok":true}' | openssl dgst -sha256 -hmac "demo-secret"
SHA2-256(stdin)= 843e083cfcc57142e9fa7cf1391073ddf46c2437c54bc7f4e4ea3d95cb98e632
서버를 직접 운영한다면 가상서버에서 위 명령을 그대로 쓸 수 있어요. 가입하면 2,000원 크레딧이 들어와서 작은 서버를 먼저 띄워 볼 수 있어요.
자주 묻는 질문
해시값이 같은 다른 파일이 있을 수 있나요?
이론상으로는 있어요(충돌). 다만 SHA-256 에서 일부러 찾아낸 사례는 아직 알려지지 않았어요. MD5·SHA-1 은 찾아낼 수 있어서 보안용으로 쓰지 않아요.
해시값으로 원래 비밀번호를 알 수 있나요?
직접 되돌릴 수는 없어요. 다만 짧고 흔한 비밀번호는 미리 계산해 둔 표와 맞춰 볼 수 있어서, 솔트와 느린 해시가 필요해요.
체크섬과 해시는 같은 말인가요?
비슷하게 써요. 체크섬은 '파일이 깨졌는지 확인하는 값'이라는 쓰임새를 말하고, 요즘은 그 값을 대부분 해시 함수로 만들어요.
SHA-256 의 256 은 무슨 뜻이에요?
결과가 256비트라는 뜻이에요. 16진수로 쓰면 64자가 돼요.
관련 용어
2단계 인증 · 세션 · OAuth · 캐시 · 서버란
이 글의 숫자 출처
- 실행 결과: 우리 PC(Windows, Git Bash · GNU coreutils 8.32, PowerShell, OpenSSL), 2026-10-29 22:54 KST. 속도는 3회 측정.
- SHA-256 표준: NIST FIPS 180-4
- MD5 보안 주의: RFC 6151
- 비밀번호 저장 권고: NIST SP 800-63B
- 작성: 서순명(솔리드그루 이사 · 퓨쳐인프라 — 국내 IDC 에서 클라우드 서버·앱 호스팅·AI API 를 운영) · 작성일 2026-10-29
- 운영사: 솔리드그루 · 사업자등록번호 875-44-00335 · 서울특별시 구로구 디지털로29길 38, 7층 707호 · 전화 02-6933-6229 · support@futureinfra.ai · 고객센터 · 이용약관
- 한계: 속도는 우리 PC(Windows, Git Bash 의 GNU coreutils 8.32)에서 잰 값이에요. 컴퓨터 사양에 따라 달라요.
- 이해관계: 퓨쳐인프라 웹훅 서명 방식을 예로 들었어요(자사 서비스).
연관 서비스
많이 본 글
-
블로그
무료 도메인 사이트 추천 2026 — 내도메인.한국·DuckDNS 발급 방법
내도메인.한국·DuckDNS 처럼 계속 무료인 주소 10곳을 11월 3일 서울에서 다시 재고(6곳 6ms 안), 발급 순서·구글·네이버 무료 주소·'첫해 무료'의 2년째 값까지 정리했어요. -
블로그
도메인 구매 사이트 추천 2026 — 가비아·후이즈 등 15곳 갱신·이전비 비교
같은 .co.kr 도 등록업체 15곳의 3년 값이 3.8만~8.6만 원이에요(11월 3일 KRNIC 표). 갱신가·이전비·해외 업체 조건, 11월 인상 뒤 가비아 실제 화면, 구매처 확인과 기관이전까지 정리했어요. -
블로그
클로드 MCP·Gemini MCP 연동 방법 2026, MCP 서버 9곳
클로드 MCP(데스크톱·Claude Code)와 Gemini MCP 연동(Gemini CLI·안티그래비티·Gemini 앱·API) 등 9곳의 MCP 서버 연결법을 공식 문서로 정리했어요. 원격 57ms 실측과 오류 해결까지. -
블로그
Gemini 3.9 Flash 나왔나요? 지금 최신은 3.8 Flash — 3.7과 직접 잰 속도·비용
2026년 9월 22일 기준 Gemini 3.9 Flash는 미출시입니다. 최신 3.8 Flash의 사양·가격(2027년 2배 인상)과, 3.7 Flash와 같은 과제로 직접 잰 속도·비용·JSON 형식 준수 차이를 정리했습니다. -
블로그
서버비 한 달 얼마? 방문자 10만 명도 월 3만 2천 원(2026 계산)
월 방문자 1천·1만 명은 1만 4천 원, 10만 명은 3만 2천 원이에요. 요금제별 트래픽 기본 제공량까지 넣어 다시 계산하고 AWS·카페24·가비아·네이버클라우드 값과 숨은 비용을 비교했어요(2026-10-26 확인).
댓글 0
로그인하면 댓글을 남길 수 있습니다.