1. 해시 (Hash) 이란?
ㅇ ① 다진(뒤범벅된) 고기 요리
ㅇ ② 우물 정자 (#, 해시 태그)
ㅇ ③ 긴 메세지를 뒤섞어 (정리하여) 고정 길이의 값으로 바꿈
2. 해시 관련 용어들
ㅇ 해시 함수 (Hash Function) / 해시 알고리즘 (Hash Algorithm)
- 임의 길이의 메세지를 일정 고정 길이의 해시 값으로 변환시켜주는,
단방향성 함수/알고리즘
- [참고 용어]
. 단방향성,일방향성 (One-way)
.. 결과값으로는 입력 값을 알 수가 없는 또는 알기가 어려운 성질
. 프리 이미지 (pre-image)
.. 단방향성 해시 함수의 입력 값
ㅇ 해시 값 (Hash Value)
- 단방향성 해시 함수의 출력 결과 값
. 때론, `Fingerprint`, `메세지 다이제스트 (Message Digest)` 라고도 함
. 탐색용일 때는, `해쉬 주소 (Hash Addres)` 라고도 함
ㅇ 해쉬 충돌 / 해쉬값 충돌 (Hash Collision)
- 2개의 다른 메세지가 같은 해시값(해시함수 수행 결과)을 갖는 경우
- 해싱 탐색에서, 해쉬값 충돌 방지 방법
. 해결 방법 중 하나로는, 이미 할당된 해쉬값 위치 다음의 빈 위치에 할당하는 등
ㅇ 해쉬 내성 / 해쉬 충돌 내성 (Hash Collision Resistance)
- 해시 충돌을 발견해내는 것이 어려운 성질
. 약한 충돌 내성
.. 주어진 해시값을 갖는 다른 메시지를 발견해내기 어려운 성질
. 강한 충돌 내성
.. 동일 해시값을 갖는 다른 2개 메시지를 발견해내기 어려운 성질
ㅇ 해쉬 주소 (Hash Address)
- 해시 함수에 의해, 탐색 키를 입력으로 하여, 생성된 주소
ㅇ 해싱표, 해쉬표, 해시 테이블 (Hash Table)
- 탐색 키 및 해쉬 주소가 배열로 구현된 테이블
. 해싱에 이용되는, 일정 크기의 자료구조 (기억공간)
. 고정된 크기의 자료구조로써, 사전에 그 크기가 미리 정해짐
. 키를 값에 매핑할 수 있는 자료구조임
ㅇ 해쉬 맵 (Hash Map)
- 해시 함수를 이용하여, [키,값]으로 연관(맵)시킨 자료구조