해시와 해시 함수

Download Report

Transcript 해시와 해시 함수

해시와 해시 함수
해싱이란?

해싱
• 하나의 문자열을 원래의 것을 상징하는 더 짧
은 길이의 값이나 키로 변환하는 것이다.
용도
• 해시테이블을 이용한 탐색에 쓰인다.
 해시테이블
• 키 값에 직접 산술적인 연산을 적용하여 항목이

저장되어 있는 테이블을 해시테이블
해싱의 방법?
값
해싱의 결론!
해싱에서는 자료를 저장하는데 배열사용
 원하는 항목이 들어 있는 위치를 알고 있다
면 매우 빠르게 자료를 삽입하거나 꺼낼 수
있다.

어떤 항목의 키만을
가지고 바로 항목이 들어 있는 배열의
인덱스를 결정하는 기법이다.
해싱 함수란?
=해시 알고리즘
• 해싱할때 키를 변환시켜주는 도구
• 효율적인 변환을 위한좋은 해시함수가 필요
• 좋은 해시 함수의 조건
• 충돌이 적어야 한다.
• 해시 함수 값이 해시 테이블의 주소 영역 내에서
•
고르게 분포되어야 한다.
계산이 빨라야 한다.
좋은예,나쁜예
해쉬충돌


해시함수가 서로 다른 두 개의 입력값에 대
해 동일한 출력값을 내는 상황을 의미한다
해결책
• 개방주소법Open Addressing:
• 선형탐색법Linear Probing
• 2차 탐색법Quadratic Probing
• 연쇄 방법Chaining Method
해쉬함수의 종류



나눗셈법(Division method)
• 탐색 키를 해시 테이블의 크기로 나눈 나머지를 해
시 주소로 사용하는 방법
폴딩법Folding
• 키 값을 몇 개의 부분으로 분할 후 합산하여 해쉬
주소를 생성하는 방법이다.
그외
• 유니버셜 해싱(Universal hashing)
• 중간제곱함수법
• 비트추출 방법
• 숫자분석 방법
MD5
해시함수의 한 종류
 Ron Rivest가 1990년에 발표
 사용방법
• 임의 길이의 입력을 받아 이를 128bit의 해쉬 결

과값으로 변환

목적
• 전자서명에 주로 이용된다.
Md5 원리1

padding bit의 추가
• 키값의 512비트블록들로 나눈 나머지 비트를
•

512까지 채우는데 모자란 부분을 0으로 채운다.
즉, 키값은 512의 배수의 값이 된다.
연산
• 4 word buffer A,B,C,D가 연산에 사용된다
Word A : 01 23 45 67
Word B : 89 ab cd ef
Word C : fe dc ba 98
Word D : 76 54 32 10
F(X,Y,Z) = XY v not(X) Z
G(X,Y,Z) = XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
64번
Md5의 결과
A,B,C,D, 키값의 연산 결과값은
A,B,C,D의 값이다. (A~ D)
길이는 4 word, 즉 128 bit이다.
A=B=C=D=4word=32bit
결과값은 ABCD=128bit가 된다.