Hash

·2023년 5월 23일
0

개발 지식

목록 보기
80/96
post-thumbnail

Hash 란?

해시함수를 사용하여 키를 해시값으로 매핑하고 이 해시값을 주소 또는 색인 삼아, 데이터(value)를 key와 함께 저장하는 구조.

value

저장하고자 하는 정보. 최종적으로 저장소(bucket, slot)에 hash와 매칭되어 저장된다.

key

고유한 값으로, 해시함수의 input 값이다. key값 그대로 최종 저장소에 저장되면 다양한 길이의 저장소를 미리 구성해두어야 하기 때문에, 값을 바꿔 저장한다.

해시 함수

key 를 고정된 길이의 값으로 바꾸는 작업. 이 때 서로 다른 key 가 같은 hash로 변환되는 경우가 있을 수 있다. 이를 hash collison (해시 충돌) 이라 부른다.

검색, 삭제, 삽입

일반적으로 해시테이블의 삽입, 삭제, 검색의 복잡도는 O(1)O(1) 이다. Key 가 고유하며 해시 함수의 결과로 나온hash를 통해 value 가 저장된 저장소를 바로 찾을 수 있기 때문이다

해시 사용 용도

비밀번호 암호화

사용자가 입력한 비밀번호를 그대로 DB에 입력하는 경우, 관리하는 개발자가 개인 정보를 확인할 수 있기도 하고, DB에 접근하는 경우 사용자의 정보를 파악하는 위험을 가지고 있다. 이러한 부분을 위해 일반적으로 회원가입 시 비밀번호 항목을 hash 화 하여, 저장하게 한다. 실제 로그인 과정에서도 입력한 해시값과 저장된 해시값이 동일한지를 비교하며, 비밀번호를 재설정하는 경우도 새로운 해시값으로 재설정하는 작업을 진행한다.

현업자에게 들은 바로는 비밀번호 뿐만이 아니라 문제가 될 수 있는 모든 개인 정보에 대해 전반적으로 해시값 암호화하여 저장한다고 한다.

복제 문서 판별

긴 문장의 경우, 일일히 하나하나 맞춰보기보다는 두 문장을 해시화 했을 때 서로가 동일하다면 두 문장은 서로 같은 내용이라고 할 수 있다.

디지털 서명

주어진 데이터를 해시화하는 작업을 통해, 데이터의 무결성을 확보할 수 있다.

해시 태그

#ootd 를 검색하는 경우, 해시 알고리즘은 #ootd를 고유한 숫자 식별자로 변환한다. 이후 그 식별자를 통해 데이터베이스에서 #ootd라는 해시태그가 있는 모든 게시물을 검색할 수 있다.

profile
새로운 것에 관심이 많고, 프로젝트 설계 및 최적화를 좋아합니다.

0개의 댓글