긴 입력을 짧은 값으로
대용량 파일을 비교할 때 정해진 해시 함수의 출력값을 비교하면 차이를 빠르게 찾는 데 도움이 된다. 동일한 함수와 처리 규칙에서 입력이 같으면 출력도 같다. 출력이 다르면 입력이 다르다는 판단을 할 수 있다.
그러나 해시값이 같다는 사실만으로 원본이 수학적으로 반드시 같다고 결론 내릴 수는 없다. 출력의 가능한 수가 입력보다 적으면 서로 다른 입력이 같은 출력에 대응하는 충돌이 존재한다.
자료 구조에서의 사용
해시 테이블은 키의 해시값으로 후보 위치를 정한 뒤 실제 키를 확인한다. 충돌이 나면 별도의 규칙으로 함께 저장하거나 다른 위치를 탐색한다. 따라서 해시값이 고유한 원본 식별자라는 가정 없이도 동작하도록 설계한다.
암호학적 함수의 추가 조건
암호학적 해시는 주어진 출력에 맞는 입력을 찾거나 충돌 쌍을 찾는 계산이 어렵도록 설계한다. 단순히 값이 고르게 퍼지거나 계산이 빠르다는 특성만으로 이런 안전성이 확보되지는 않는다.
보안 목적에서는 용도에 맞는 검증된 구성과 알고리즘을 사용해야 한다. 빠른 일반 해시를 한 번 계산하는 방식과 비밀번호를 보호하기 위한 전용 처리 방식은 구분한다.
암호화와 다른 점
암호화는 적절한 키로 복호화하여 내용을 되찾는 기능을 갖는다. 해시는 일반적으로 원문 복원을 위한 역변환을 제공하지 않는다. 출력만 안다고 원본을 항상 알아낼 수 있는 것도 아니지만, 쉽게 추측할 수 있는 후보는 직접 해시하여 비교할 수 있다.