2012-08-08 2 views
0

MurmurHash3을 사용하여 큰 데이터 조각을 고유하게 식별하고 싶습니다. 이 구현은 :MurmurHash3은 데이터 블록을 여러 부분으로 (점진적으로) 해시 할 수 있습니까?

http://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.h

하지만, 점진적으로 해시를 업데이트 할 수있는 방법을 제공하지 않는 것 - 주어진 데이터의 블록 당 하나의 별도의 해시를 계산하는 것 같다. 예를 들어 디스크에서 512MB의 데이터를 해시했다면 메모리에 한 번에 모두로드하거나 네트워크에서 알 수없는 양의 데이터를 해싱하려고하지 않을 수 있습니다. 그런 맥락에서 MurmurHash3를 사용한 적이 있습니까? (많은 양의 데이터를 점진적으로 해싱) 만약 당신이 저에게 어떤 자원이나 대안 구현을 가르쳐 줄 수 있다면, 그것은 좋을 것입니다 :). OpenSSL에서 SHA256_Update과 비슷한 것을 찾고 있습니다.

감사합니다.

답변

4
+0

감사합니다. Monroe! 128 비트 해시 구현에 대해 알고 계십니까? – fyhuang

+0

@ fyhuang 당신은 128 비트 버전의 데이터 유형과 코드를 대체하여 PMurHash.c에서 같은 패턴을 쉽게 따라야합니다. 행운을 빕니다! –

+1

정확합니다. https://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp#319 (319 행) 이후의 모든 것은 CalculateFinalHash 구현에 포함됩니다. 블록 단위로 처리하기 전에 필요한 바디 (호출 사이에'h1','h2' 및'length '를 저장해야합니다). 또한 블록 길이 (또는 그 여러 데이터)를 실제로 전달할 필요가 없으며 모든 길이의 데이터를 처리 할 수 ​​있습니다. 사실 저는 더 많은 데이터를 사용하는 것이 더 빠르다는 것을 알게되었습니다. (그래서 빡빡한 루프로 인해) OS 페이지가 길어졌습니다. –

관련 문제