본문 바로가기

카테고리 없음

[알고리즘] String ELF Hash 함수

Sometime ago I posted a code for hash calculation of strings (CRC32 and easy method which is extracted from VCL sources).
Today I want to post a code for ELF algorithm which allow to receive a strong distributed hash from string.
This algorithm is very popular because can be implemented in any programming language (from VB to Java)
and is a very-very fast (contain one easy loop only).

See a code below:

function ElfHash(const Value: string): Integer;
var
  i, x: Integer;
begin
  Result := 0;
  for i := 1 to Length(Value) do
  begin
    Result := (Result shl 4) + Ord(Value[i]);
    x := Result and $F0000000;
    if (x <> 0) then
      Result := Result xor (x shr 24);
    Result := Result and (not x);
  end;
end;



A few examples you can see in table below:
-----------------------------------------
  Text value              Calculated elf-hash
-----------------------------------------
   Scalabium Software       189378421
   Scalabium                    136833325
   scalabium.com             153641565
   www.scalabium.com     156665277