아이티-잉

공부하며 정리하는 IT블로그

Today   Total  
2023년! 복 많이 받으세요

[특집] 해시(Hash) :: 개념, 해시 테이블, 해시 함수, 해시 태그, 해시 브라운

2016. 4. 6. 23:48

해시 Hash

 

원래 알고리즘으로 분류하여 다루려 했는데, 가볍게 살펴보기 위해 특집으로 변경했다.

온갖 해시에 대해 간단하게 살펴보도록 하자.

 

 

 


~ 광고 타임 ~


 

 

 

용어와 개념

 

영문이라 해쉬 해시 해씌 해씨 등 발음하는건 자유지만 보통 해시로 표기한다.

컴퓨터에서의 해시는 임의 값을 고정 길이로 변환하는 것을 의미한다.

 

 

 

예를 들어 배트맨과 슈퍼맨이 해시함수를 통과했는데 각각 00과 01로 매칭되었다고 가정하자.

 

즉, 해시 함수(Hash function)는 약속한 규칙에 의해 임의의 입력값을 가공한다.

가공된 출력값을 해시값(Hash value)이라고 하며 이는 길이가 고정된 형태다.

또한 해시값과 기존의 입력값을 묶어서 한 쌍의 형태로 만든 것이 바로 해시 테이블(Hash table), 해시 맵(Hash map)이다.

그외 프로그래밍에서 해시값을 저장하는 리스트 형태를 해시 셋(Hash set)이라 한다.

 

해시 태그(Hash tag)는 주로 SNS상 이나 웹 페이지, 이미지 등등에 이용되는 사용자 정의 색인값으로,

정보에 대한 접근을 용이하게 한다는 부분에서는 앞서 언급한 해시와 유사하다.

 

 

 

 

 

종류

 

재차 언급하지만, 고루 적용되는 해시에 대해 '가볍게' 살펴보자.

 

 

 

1) 자료구조

 

자료구조에서의 해시는 주로 색인, 탐색 용으로 이용된다.

대표적인 프로그래밍 언어인 자바(JAVA)에서는 해시 테이블과 해시 셋, 해시 맵 클래스를 제공한다.

 

- 특징

가) 자바 API에 따르면 Set은 Collection 클래스에 속하며, Map과 Table은 Map 클래스에 속한다.

나) 해시 셋은 크게 두 가지로, 순서를 기억하는 링크드 해시 셋(LinkedHashSet)

입력 순서를 무시하는 일반 해시 셋(HashSet)으로 나뉘고 두 클래스 모두 중복을 제거한다.

다) 해시 맵은 동기화를 보장하지 않고 해시 테이블은 동기화를 보장한다.

라) 자바에서의 해시코드 메소드(hashcode.())는 객체 고유의 정수값을 출력해주며 객체간 구별목적으로 쓰인다.

 

 

2) 알고리즘

 

 

해시값은 고정 길이를 할당하다보니 충돌(Collision)이 발생할 수 있다.

 

만약 해시 크기를 2비트로 할당한다면, 00, 01, 10, 11로 표현가능하고 가짓수는 최대 4가지다.

그러나 각기 다른 입력값 { A, B, C, D, E } 총 5가지가 있을 때, A와 E가 서로 다른 값임에도 둘다 00을 할당받을 수도 있단 의미가 된다.

 

이러한 충돌을 예방하기 위해 유명한 해시 알고리즘이 존재하고, 대표적으로 Message-Digest Algorithm과 Secure Hash Algorithm이 있다.

지속적인 개선이 이루어지고 있고, 각 MDx, SHAx 식으로 뒤에 숫자를 붙여 나타내며 높을 수록 최신 알고리즘이 된다.

 

만약 당신이 알고리즘에 관심이 많아서 보다 자세한 정보를 알고싶다면 MD5 위키SHA 위키를 참고하자.

 

 

또한, 조금만 생각해보면 암호화가 되는 셈이다. 그래서 해시는 암호화 및 복호화에서도 이용되곤 한다.

 

 

 


~ 광고 타임 ~


 

 

3) 메타데이터

 

 

메타데이터(Metadata)는 데이터의 데이터라는 의미로, 우리 일상에서도 쉽게 접할 수 있다.

대표적으로 사진 촬영시 촬영 시각, 카메라 종류, 장소 등이 이에 해당한다.

 

해시태그 또한 마찬가지이자, 검색이나 탐색을 용이하게 도와주는 역할을 한다.

아마 트위터가 해시태그의 대중화를 이뤄냈다고 해도 과언이 아닐 것이다.

 

최근 SNS상에서는 의미가 보다 확대되어 그냥 하고싶은 말을 남기는 것 같기도 하다.

#예를 들어 #이렇게 #하하핳

 

 

 

 

 

4) 음식

 

 

 

대표적인 해시 요리(?) 해시 브라운(Hash brown)이다.

해시(Hash)는 감자와 고기를 다져 만든 요리를 의미한다고 한다.

여기에 갈색(Brown)빛이 나도록 굽거나 튀겼기에 이름에 브라운이 붙었다.

 

 

아무래도 외국 태생 요리이므로 만드는 방법은 여기(영문/인스트럭쳐블스)에 널려있다.

물론 우리나라 네이버다음, 구글에도 널려있으니 만들고 싶거든 참고하자.

 

 

 

 


~ 광고 타임 ~


 

 

 

5) 시간

 

 

해시(亥時)는 꾸러기 수비대를 열심히 봤다면 누구나 알 것이다.

똘기 떵이 호치 새초미 자축인묘~ 노래가사처럼,

자축인묘 진사오미 신유술해까지 십이간지를 시간으로 나타낸 것이다.

 

즉, 오후 9시부터 11시까지를 해시라고 한다.

 

아마 점을 자주보거나 사주에 관심이 많다면 가장 먼저 이 해시를 떠올렸을 것 같다.

 

 

 

6) 만화

 

해시의 신루라는 만화가 있다고 한다.

어릴적 포켓몬스터 이후로 만화를 안봐서 잘 모르겠다.

 

 

 

 

 

7) 자연 현상

 

 

해시(海市)는 신기루(mirage)와 같은 의미로, 공중누각(空中樓閣)처럼 빛의 굴절로 인해 헛것(?)이 보이는 현상을 말한다.

필자도 몰랐는데 찾다보니 별개 다 나오는 것 같아서 유식한 척 적어본다.

 

 

 

 

8) ???

 

첫번째 특집인 만큼, 앞으로 또 다른 해시가 발견되면 업데이트하며 계속해서 채워보겠다.

 

 

 

 


~ 광고 타임 ~


 

 

 

마치며

 

 

원래 IT에서 말하는 해시만 다루려고 했었는데 개념만 소개하려다보니,

내용이 너무 없는 것 같아서 이것저것 찾아 붙여봤다.

 

생각보다 포스팅 시간이 오래걸려서 여기서 마치겠다.

 

 

 

 

끝.