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가 된다.