개요
해시 함수는 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑하는 함수를 말한다. 이러한 해시 함수를 적용하여 나온 고정된 길이의 값을 해시값이라고 한다. 이 값은 또한 해시 코드, 해시섬(sum), 체크섬[* 의미는 살짝 다르지만 해시가 체크섬과 동일한 목적으로 사용되는 경우도 많기는 하다.] 등으로도 불린다.
해시 함수는 보통 그리 복잡하지 않은 알고리즘으로 구현되기 때문에, 상대적으로 CPU, 메모리 같은 시스템 자원을 덜 소모하는 특성이 있다. 그리고 같은 입력값에 대해서는 같은 출력값이 보장되며, 이 출력값은 가능한 한 고른 범위에 균일하게 분포하는 특성이 있다. 특수 목적용으로 해시값을 생성하는 원본과 별도의 값을 입력받아서 같은 입력에 대해 다른 출력값을 가지게 하는 해시 함수도 존재한다. 또한 해시함수는 필연적으로 충돌이 발생하는데, 따라서 해시 함수는 충돌이라는 예외사황을 처리할 기술이 반드시 필요하다.
이러한 특성에 힘입어 다양한 목적에 맞게 설계된 해시 함수가 존재하며 다음과 같은 다양한 분야에서 매우 유용하게 사용된다.
* 자료구조 * 해시 테이블 (또는 해시 맵) * 해시셋(set) * 블룸 필터(Bloom filter) * 캐시 * 중복 레코드 검색 * 유사 레코드 검색 * 유사 부분 문자열 검색 * 기하학적 해시 * 변조 탐지/에러 검출
암호화 해시 함수
암호화 해시 함수는 해시 함수에 의해 보호되는 어떤 메시지를 대신할 다른 메시지를 찾아내는 일이 실행 불가능한 정도의 계산을 요구해야 한다.