스플렁크 역시 해시 변환을 지원한다.
그런데 MURMUR3은 지원하지 않음. 어떻게 하면 16진수를 숫자로 바꿀 수 있을까? eval 명령어는 숫자가 아닌 데이터를 십진수로 바꿔주는 tonumber 함수 기능을 제공한다.
그런데 16진수의 경우 17자리를 넘어가면 변환을 하지 못하는 제한이 있음. (16자리 이하여도 안 될 때 있음. 숫자 크기 문제인가?) 32자리인 md5 해시를 숫자로 바꿀 수 없다는 얘기. 중대장은 실망했다
나눠서 계산하면?
8자리씩 나눠 계산한 다음 결과는 원본 16진수의 숫자 변환 결과와 큰 차이를 보인다. 나눌 때 선행하는 16진수의 올바른 자리수를 반영하지 않았기 때문.
정확한 값을 구하려면 다음과 같은 자리수 반영이 필요하다. 결과적으로 17자리 이상의 16진수는 여전히 변환 불가.
나눠서 변환 후 더하는 방법은 중복 가능성을 최소화해야 하는 해시의 의미를 퇴색시킬 수도 있다. 1+2와 2+1의 상황이 발생할 수도 있기 때문. 그저 고유값 생성이 목적이라면 나눠 계산한 결과를 이어붙이는 게 중복 방지에는 더 효과적일 듯.
댓글 없음:
댓글 쓰기