해시 함수

용어요약

Hash Function

해시 함수는 임의 길이의 입력 데이터를 고정된 길이의 값으로 변환하는 함수로, 같은 입력에 대해 항상 같은 결과를 내놓는다.

1.개요

해시 함수(hash function)는 임의의 길이를 가진 입력 데이터를 받아 고정된 길이의 출력값으로 변환하는 함수이다. 이 출력값을 해시값(hash value) 또는 해시라고 부르며, 변환하는 과정을 해싱이라고 한다. 예를 들어 한 문장을 넣든 책 한 권 분량의 문서를 넣든, 특정 해시 함수는 항상 동일한 자릿수의 값을 만들어낸다.

해시 함수는 크게 세 가지 성질을 가진다. 첫째, 결정성으로 같은 입력을 넣으면 언제나 같은 해시값이 나온다. 둘째, 계산이 빠르다. 셋째, 입력이 아주 조금만 바뀌어도 출력값이 전혀 다르게 변한다. 이 때문에 데이터가 위·변조되었는지 확인하는 무결성 검증에 널리 쓰인다.

특히 암호학에서 사용되는 암호학적 해시 함수는 추가로 두 가지 성질을 요구한다. 하나는 해시값만 보고 원래 입력을 되돌릴 수 없다는 단방향성이고, 다른 하나는 같은 해시값을 갖는 서로 다른 두 입력을 찾기가 사실상 불가능하다는 충돌 저항성이다. 대표적인 예로 SHA 계열이 있으며, 과거에 널리 쓰였던 MD5는 충돌 취약점이 발견되어 보안 용도로는 권장되지 않는다.

2.쓰임새

해시 함수는 정보 기술 전반에서 폭넓게 활용된다. 비밀번호를 원문 그대로 저장하지 않고 해시값으로 바꿔 저장하면, 데이터베이스가 유출되더라도 원래 비밀번호를 곧바로 알아내기 어렵다. 또한 파일을 내려받을 때 제공된 해시값과 비교하여 파일이 손상되거나 변조되지 않았는지 확인하는 데도 쓰인다. 이 밖에 대량의 데이터를 빠르게 찾기 위한 해시 테이블 같은 자료 구조에서도 핵심 역할을 한다.

전자서명에서도 해시 함수가 사용된다. 문서 전체가 아니라 문서의 해시값에 서명함으로써, 서명 과정을 효율적으로 처리하면서도 문서가 바뀌면 검증에 실패하도록 만든다.

3.블록체인과의 관계

해시 함수는 블록체인 기술의 근간을 이룬다. 각 블록은 이전 블록의 해시값을 담고 있어, 블록들이 사슬처럼 연결된다. 어느 한 블록의 내용을 조금이라도 바꾸면 그 해시값이 달라지고, 이후의 모든 블록과 연결이 어긋나므로 위·변조가 즉시 드러난다. 이러한 구조가 분산된 장부의 신뢰성을 뒷받침한다.

또한 비트코인 등의 작업증명 방식 채굴은 특정 조건을 만족하는 해시값을 찾을 때까지 논스를 바꿔가며 반복 계산하는 과정이다. 블록 안의 거래들을 효율적으로 요약하는 머클 트리 역시 해시 함수를 반복 적용해 구성된다. 이더리움 등에서 쓰이는 케차크도 이러한 암호학적 해시 함수의 한 종류이다.

이 문서 인용하기
토큰포스트 위키, “해시 함수”, 2026-08-06 수정, https://wiki.tokenpost.kr/w/hash-function

문단 3개 · 연표 0건 · 각주 0