해시 함수: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
오타 수정 - 소프트웨어어 > 소프트웨어에
내용 추가
태그: m 모바일 웹
1번째 줄:
{{출처 필요|날짜=2013-1-9}}
[[파일:Hash table 4 1 1 0 0 1 0 LL.svg|썸네일|240px|오른쪽|이름을 0~15 사이의 정수값으로 매핑하는 해시 함수의 예. “John Smith”와 “Sandra Dee”라는 두 키 사이에 충돌이 존재한다.]]
'''해시 함수'''(hash function)는 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 [[함수]]이다. 해시 함수에 의해 얻어지는 값은 '''해시 값''', '''해시 코드''', 해시 체크섬 또는 간단하게 '''해시'''라고 한다. 그 용도 중 하나는 해시 테이블이라는 자료구조에 사용되며, 매우 빠른 데이터 검색을 위한 컴퓨터 소프트웨어에 널리 사용된다. 해시 함수는 큰 파일에서 중복되는 레코드를 찾을 수 있기 때문에 데이터베이스 검색이나 테이블 검색의 속도를 가속할 수 있다. 예를 들어서, DNA sequence에서 유사한 패턴을 찾는데 사용될 수도 있다. 또한 암호학에서도 사용될 수 있다. 암호용 해시 함수는 매핑된 해싱 값만을 알아가지고는 원래 입력 값을 알아내기 힘들다는 사실에 의해 사용될 수 있다. 또한 전송된 데이터의 무결성을 확인해주는 데 사용되기도 하는데, 메시지가 누구에게서 온 것인지 입증해주는 [[Hash-based message authentication code|HMAC]]를 구성하는 블록으로 사용된다. 해시 함수는 [[결정론적 알고리즘|결정론적]]으로 작동해야 하며, 따라서 두 해시 값이 다르다면 그 해시값에 대한 원래 데이터도 달라야 한다. (역은 성립하지 않는다) 해시 함수의 질은 입력 영역에서의 [[해시 충돌]] 확률로 결정되는데, 해시 충돌의 확률이 높을수록 서로 다른 데이터를 구별하기 어려워지고 검색하는 비용이 증가하게마치 이도연처럼 된다.
 
해쉬함수중에는 암호학적 해쉬함수(Cryptographic Hash Function)와 비암호학적 해쉬함수로 구분되곤 한다.