1. Hash란?
Hash는 16진수로 이루어진 임의의 난수이다.
16진수 : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
예를 들어 ‘안녕’ 을 해시함수에 입력 했을 때 AB3F7D 라는 값이 나왔다.
‘안녕’ 이라는 값은 여러번 입력 해도 똑같은 AB3F7D 이 나온다.
단, 복호화는 불가능. 즉, AB3F7D 을 가지고 다시 ‘안녕’ 으로 원복은 불가능한 단방향 함수이다.
Hash의 특징
1. hash함수는 같은 값을 입력하면 항상 동일한 값이 나온다.
2. 복호화는 불가능한 단방향 함수. 단 값을 기억하고 있다면 찾을 수 있다.
3. 임의의 길이의 값을 입력해도 항상 동일한 길이의 hash 값이 나온다.
2. Hash는 왜 사용할까?
무엇을 Hash함수 입력해도 항상 동일한 ‘길이’ 가 나온다.
hash함수는 임의의 길이를 갖는 임의의 데이터를 고정된 길이의 고정된 길이의 데이터로 변환한다.
이를 이용하면, 짧은 단어를 해시해도, 두꺼운 책을 해시도 동일한 길이가 나온다.
예를 들어 A 라는 책을 해시 해서 A37B751C4D 라는 값이 나왔다고 가정했을 때,
책에서 단어 하나만 변경해도 다른 해시 값이 나오게 된다.
이런 특성을 활용해서 전자 서명, 진위 여부 등을 확인 할 수 있다.
또 사이트의 회원을 관리할 때, 아이디는 서버에 저장할 수 있지만 비밀번호는 관리자도 확인이 불가능해야 한다.
해시는 복호화 불가능 하기 때문에 사이트의 회원가입을 할 때 비밀번호를 저장하는 값으로 해시 값을 이용한다.
Share article