---
title: "해싱"
title_en: "Hashing"
type: 용어
url: https://wiki.tokenpost.kr/w/hashing
canonical: https://wiki.tokenpost.kr/w/hashing
language: ko
publisher: "토큰포스트"
updated: 2026-07-31T00:46:28.121+00:00
created: 2026-07-28T22:52:19.318959+00:00
same_as: ["https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%B1", "https://en.wikipedia.org/wiki/Hashing"]
status: draft
---

# 해싱
> Hashing

> **인용 전에 확인해 주세요.** 이 문서는 자동으로 만든 초안이며 사람의
> 검수를 거치지 않았습니다. 사실 관계는 아래 각주의 원문으로 확인해 주세요.

**분류**: 용어

해싱은 임의의 크기·형식을 가진 입력 데이터를 해시 함수라는 알고리즘에 넣어 고정된 길이의 해시값으로 변환하는 과정이다. 데이터 검색을 위한 자료구조부터 암호학적 무결성 검증, 그리고 [비트코인](https://wiki.tokenpost.kr/w/bitcoin)을 비롯한 블록체인의 근간까지 폭넓게 쓰이는 컴퓨터 과학의 기초 개념이다.

## 1. 개요

해싱(Hashing)은 임의의 크기와 형식을 가진 입력 데이터를 해시 함수(hash function)라는 수학적 [알고리즘](https://wiki.tokenpost.kr/w/algorithm)에 넣어 고정된 길이의 문자열, 즉 해시값으로 변환하는 과정이다. 예를 들어 한 문장을 넣든 수백 메가바이트의 파일을 넣든 결과로는 항상 동일한 길이의 값이 나온다. 이때 얻어지는 값은 맥락에 따라 해시값, 해시 코드, 해시 체크섬 등으로 불린다.

해싱의 쓰임은 크게 두 갈래로 나뉜다. 하나는 데이터를 빠르게 저장·검색하기 위한 **자료구조**로서의 활용이고, 다른 하나는 데이터가 위·변조되지 않았음을 증명하는 **암호학적** 활용이다. 특히 후자의 성질 덕분에 해싱은 데이터의 지문(fingerprint) 역할을 하며, 오늘날 [전자서명](https://wiki.tokenpost.kr/w/digital-signature)과 [분산원장](https://wiki.tokenpost.kr/w/distributed-ledger) 기술의 바탕이 되었다.[^1]

## 2. 해시 함수의 성질

해싱을 이해하는 핵심은 좋은 해시 함수가 갖추어야 할 성질에 있다. 특히 보안 목적에 쓰이는 암호학적 해시 함수는 다음 성질을 만족해야 한다.

- **결정론적 동작**: 같은 입력에는 언제나 같은 해시값이 나온다. 반대로 두 해시값이 다르다면 원래 입력도 반드시 다르다.
- **눈사태 효과(avalanche effect)**: 입력이 한 글자, 심지어 한 비트만 바뀌어도 결과값은 이전과 전혀 관련 없어 보이는 값으로 완전히 달라진다.
- **단방향성(역상 저항성)**: 해시값만 보고 원래 입력을 되돌리는 것은 사실상 불가능하다. 이를 역상(pre-image)을 찾기 어렵다고 표현한다.
- **제2역상 저항성**: 어떤 입력이 주어졌을 때, 그것과 같은 해시값을 내는 또 다른 입력을 찾기 어렵다.
- **충돌 저항성**: 서로 다른 두 입력이 우연히 같은 해시값을 갖는 충돌(collision) 자체를 찾아내기가 매우 어렵다.

이러한 성질이 함께 성립하기 때문에 해시값은 원본 데이터를 대신하는 짧고 고유한 표식으로 신뢰받을 수 있다.

## 3. 암호학적 해시와 비암호학적 해시

해시 함수는 목적에 따라 두 종류로 나뉜다.

**암호학적 해시 함수(Cryptographic Hash Function)**는 [암호학](https://wiki.tokenpost.kr/w/cryptography)에서 요구하는 역상·제2역상·충돌 저항성을 모두 갖추도록 설계되며, 인증과 무결성 검증에 쓰인다. [MD5](https://wiki.tokenpost.kr/w/md5)와 [SHA](https://wiki.tokenpost.kr/w/sha) 계열이 여기에 해당한다.

**비암호학적 해시 함수**는 보안보다 속도와 오류 검출에 초점을 둔다. 대표적으로 CRC32는 전송 오류를 잡아내거나 자료구조의 색인을 만드는 데 쓰이지만, 의도적인 위조를 막는 용도로는 적합하지 않다.

한편 암호학적 해시 함수는 임의 길이의 입력을 받되, 내부적으로 입력을 일정 블록 단위로 채우는 패딩 과정에서 원본의 길이 정보를 함께 기록한다. 이 때문에 이론상 처리할 수 있는 입력 길이에는 상한이 존재한다.

## 4. 자료구조에서의 활용: 해시 테이블

블록체인이 등장하기 훨씬 전부터 해싱은 소프트웨어의 성능을 끌어올리는 기본 도구였다. 대표적인 예가 **해시 테이블(hash table)**이다.

해시 테이블은 데이터를 저장할 때 그 값의 해시값을 계산해 저장 위치를 정한다. 나중에 같은 데이터를 찾을 때에도 해시값만 다시 계산하면 곧바로 위치를 알 수 있으므로, 자료가 아무리 많아도 매우 빠르게 검색·조회가 가능하다. 이 원리는 데이터베이스 색인, 중복 레코드 탐지, 심지어 DNA 서열에서 유사한 패턴을 찾는 작업처럼 대량 데이터를 다루는 여러 분야에서 활용된다.

다만 이 용도에서는 서로 다른 데이터가 같은 위치로 매핑되는 충돌이 성능을 좌우한다. 충돌이 잦을수록 데이터를 구별하고 찾는 비용이 커지므로, 자료구조용 해시 함수의 품질은 충돌 확률을 얼마나 낮추느냐로 평가된다.

## 5. 대표적인 해시 알고리즘

용도와 시대에 따라 여러 해시 알고리즘이 쓰여 왔다.

- **[SHA](https://wiki.tokenpost.kr/w/sha) 계열**: 가장 널리 쓰이는 암호학적 해시 함수군이다. 그중 SHA-256은 256비트 길이의 해시값을 내며, [비트코인](https://wiki.tokenpost.kr/w/bitcoin)이 핵심 알고리즘으로 채택했다. 이전 세대인 SHA-1은 안전성이 무너져 오늘날 보안 용도에서는 퇴출되고 있다.
- **[케차크(Keccak)](https://wiki.tokenpost.kr/w/keccak)**: [이더리움](https://wiki.tokenpost.kr/w/ethereum) 등이 채택한 알고리즘의 바탕으로, SHA-3 표준의 근간이 되었다.
- **[스크립트(scrypt)](https://wiki.tokenpost.kr/w/scrypt)**: 라이트코인 등이 사용하며, 계산에 많은 메모리를 요구하도록 설계해 특정 전용 하드웨어의 이점을 줄이려 했다.
- **[스케인(Skein)](https://wiki.tokenpost.kr/w/skein)**: SHA-3 표준화 과정에서 경쟁했던 후보 중 하나로, 다양한 대안 알고리즘의 존재를 보여준다.
- **[MD5](https://wiki.tokenpost.kr/w/md5)**: 한때 널리 쓰였으나 이후 취약성이 드러나 보안 용도로는 더 이상 권장되지 않는다.

이처럼 알고리즘마다 해시값 길이, 계산 비용, 메모리 요구량이 달라, 각 시스템은 목적에 맞는 것을 골라 쓴다.

## 6. 해시 충돌과 안전성의 노후화

해시 함수는 무한한 입력을 유한한 길이의 값으로 압축하므로, 원리상 충돌 자체는 반드시 존재한다. 안전성의 관건은 그 충돌을 현실적인 시간 안에 **일부러 만들어낼 수 있느냐**이다.

[MD5](https://wiki.tokenpost.kr/w/md5)는 서로 다른 두 입력이 같은 해시값을 갖도록 하는 충돌을 실제로 만들어낼 수 있음이 밝혀지면서 보안 용도에서 신뢰를 잃었다. SHA-1 역시 뒤이어 실제 충돌 사례가 공개되며 폐기 수순을 밟았다.

이 사례들은 아무리 견고해 보이는 해시 알고리즘도 연산 능력의 발전과 분석 기법의 진보에 따라 언젠가 안전성이 무너질 수 있음을 보여준다. 그래서 보안 시스템은 특정 알고리즘에 영구히 의존하기보다, 취약점이 드러나면 더 강한 알고리즘으로 옮겨갈 수 있도록 설계하는 것이 중요하다.

## 7. 블록체인에서의 활용

블록체인은 해싱 위에 세워진 기술이라고 할 수 있다. 각 블록의 [블록 헤더](https://wiki.tokenpost.kr/w/block-header)에는 이전 블록의 해시값이 담겨 있어, 블록들이 사슬처럼 연결된다. 만약 과거의 어떤 블록 내용을 조작하면 그 블록의 해시값이 바뀌고, 이후 모든 블록의 연결이 어긋나기 때문에 위조가 즉시 드러난다. 이 성질이 [분산원장](https://wiki.tokenpost.kr/w/distributed-ledger)의 변경 불가능성과 [이중지불](https://wiki.tokenpost.kr/w/double-spending) 방지의 토대가 된다.

블록 내부의 거래들은 [머클 트리](https://wiki.tokenpost.kr/w/merkel-tree) 구조로 해싱되어 하나의 대표 해시값으로 요약된다. 덕분에 수많은 거래 전체를 일일이 확인하지 않고도, 대표 해시값 하나로 특정 거래의 포함 여부와 무결성을 효율적으로 검증할 수 있다. 사슬의 첫 블록인 [제네시스 블록](https://wiki.tokenpost.kr/w/genesis-block)부터 최신 블록까지 이 연결이 이어진다.

## 8. 작업증명과 채굴에서의 해싱

[작업증명](https://wiki.tokenpost.kr/w/proof-of-work) 방식의 [채굴](https://wiki.tokenpost.kr/w/mining)에서도 해싱이 핵심이다. 채굴자는 블록 데이터에 [논스](https://wiki.tokenpost.kr/w/nonce)라는 값을 계속 바꿔가며 해싱을 반복하여, 특정 조건(예: 앞자리가 0으로 시작하는 값)을 만족하는 해시값을 찾아내야 한다.

해시 함수의 눈사태 효과 때문에 어떤 논스가 조건을 만족할지는 미리 예측할 수 없고, 오직 값을 바꿔가며 반복 계산하는 시행착오로만 답을 찾을 수 있다. 그래서 이 과정에는 막대한 연산력이 필요하며, 한 대의 기기나 네트워크 전체가 초당 수행하는 해싱 횟수를 [해시레이트](https://wiki.tokenpost.kr/w/hash-rate)(hashrate)라고 부른다.

비트코인처럼 SHA-256을 쓰는 네트워크에서는 이 계산에 특화된 [ASIC](https://wiki.tokenpost.kr/w/asic) 장비가 동원되는 반면, 메모리를 많이 요구하는 알고리즘은 [GPU](https://wiki.tokenpost.kr/w/gpu) 기반 채굴에 유리하게 작동하기도 한다. 해시레이트가 높을수록 네트워크를 위조하기 위한 비용도 커지므로, 해시레이트는 네트워크 보안의 지표로도 읽힌다.

## 9. 무결성 검증과 인증

암호학적 해싱의 가장 실용적인 쓰임은 데이터가 도중에 바뀌지 않았음을 증명하는 것이다. 원본 데이터의 해시값을 지문처럼 함께 보관하면, 나중에 다시 해시를 계산해 두 값을 비교하는 것만으로 변조 여부를 확인할 수 있다.

- **파일 검증**: 내려받은 파일의 해시값을 배포자가 공개한 값과 대조해 손상·변조를 가려낸다.
- **메시지 인증(HMAC)**: 해시 함수에 비밀 키를 결합해, 메시지가 위조되지 않았고 정당한 발신자에게서 왔음을 함께 확인하는 데 쓰인다.
- **[전자서명](https://wiki.tokenpost.kr/w/digital-signature)**: 문서 전체 대신 그 해시값에 서명함으로써 서명 과정을 효율적으로 만든다.
- **[IPFS](https://wiki.tokenpost.kr/w/ipfs) 등 콘텐츠 주소 지정**: 데이터의 위치가 아니라 내용의 해시값으로 데이터를 식별한다.
- **[해시 타임락 계약](https://wiki.tokenpost.kr/w/htlc)**: 해시값의 원본을 제시해야만 자금이 풀리도록 하여, 조건부 거래를 성사시킨다.

이처럼 해싱은 단순한 변환을 넘어, 신뢰가 없는 환경에서도 데이터의 진위를 증명하는 수단으로 자리 잡았다.

## 10. 앞으로의 과제

해싱은 성숙한 기술이지만, 안전성은 고정된 것이 아니라 계속 갱신되어야 하는 대상이다. [MD5](https://wiki.tokenpost.kr/w/md5)와 SHA-1의 사례에서 보듯, 특정 알고리즘은 언젠가 취약해질 수 있으므로 시스템은 더 강한 알고리즘으로 매끄럽게 이전할 수 있어야 한다.

또한 연산 기술의 발전은 기존 해시 함수가 제공하던 보안 여유를 갉아먹을 수 있다. 이를 대비해 더 긴 해시값을 쓰거나 새로운 설계를 표준화하려는 노력이 이어지고 있다. 블록체인처럼 한번 정한 알고리즘을 [하드 포크](https://wiki.tokenpost.kr/w/hard-fork) 없이는 바꾸기 어려운 시스템에서는, 어떤 해시 함수를 선택하느냐가 장기적인 안전성과 직결되는 중요한 결정으로 남는다.

## 11. 연표

- **1991** (이정표) 론 리베스트가 MD5 해시 알고리즘을 발표
- **1995** (이정표) 미국 NIST가 SHA-1을 표준으로 발표
- **2001** (이정표) SHA-256을 포함한 SHA-2 계열이 발표됨
- **2004** (사건) 연구진이 MD5의 실질적 충돌을 시연해 취약성이 드러남
- **2009** (출시) 비트코인 네트워크가 가동되며 SHA-256을 핵심 알고리즘으로 채택
- **2012** (이정표) NIST가 케차크(Keccak)를 차세대 표준 SHA-3로 선정
- **2015** (이정표) SHA-3가 정식 표준으로 확정 발표됨
- **2017** (사건) SHA-1의 실제 충돌 사례가 공개되며 사용 중단이 가속됨

## 각주

[^1]: [위키백과 — 해시 함수](https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%9C_%ED%95%A8%EC%88%98)

---

같은 개체: [위키백과(한국어)](https://ko.wikipedia.org/wiki/%ED%95%B4%EC%8B%B1) · [Wikipedia(EN)](https://en.wikipedia.org/wiki/Hashing)

원문: https://wiki.tokenpost.kr/w/hashing
최종 수정: 2026-07-31T00:46:28.121+00:00
발행: 토큰포스트 위키. 인용할 때 문서 제목과 원문 주소를 함께 밝혀 주세요.