Skocz do zawartości

Hashowanie


Max1414

Polecane posty

Witam! Potrzebuję zamienić string na liczbę tzn. chcę z np. "Ala ma kota" zrobić jakiś hash w postaci liczby. Znalazłem kodzik hashowania haseł gg:

 

function Hash(S: string): Cardinal;
var
  x, y, z, i : Cardinal;
begin
  y := 5;
  x := 0;
  for i := 1 to Length(S) do begin
     x := (x and $ffffff00) or Ord(S[i]);
     y := y xor x;
     Inc(y, x);
     x := x shl 8;
     y := y xor x;
     x := x shl 8;
     Dec(y, x);
     x := x shl 8;
     y := y xor x;
     z := y and $1f;
     y := (y shl z) or (y shr (32 - z));
  end;
  Hash := y;
end;

 

Tylko, że wychodzi mi poza zakres (wywala error 201)... przypuszczam, że dlatego, że w pascalu string ma tylko max 255 znakow, a kod byl pod delphi. Nie rozumiem za bardzo tego kodu, więc mógłby mi ktoś pomóc co tu mam zmienić, aby mi to działało? i jeszcze nie jestem pewny co ma być w zmiennej 'y' , standardowo byl to parametr "Seed", chodzi mi tylko, żebym zahashował string i przedstawił w postaci liczby i żebym potem mógł porównywać te hashe. z góry dzieki

Moje projekty: http://wojciechkulik.pl

Link do komentarza
Udostępnij na innych stronach

dzieki force ;) faktycznie był błąd z tym range check error... ale okazało się, że to hashowanie może generować dla różnych danych takie same hashe :( co mi nie odpowiada.

 

Zna ktoś może jak najprostsze hashowanie? (zeby jak najmniej kodu zajmowalo?) chodzi mi tylko, żeby stringa zamienił na jakąś sygnaturkę dla niego w postaci LICZBY(!).

Moje projekty: http://wojciechkulik.pl

Link do komentarza
Udostępnij na innych stronach

jak sama nazwa wskazuje hash jest skrotem, wiec jak robisz skrot z duzej ilosci danych to okazuje sie ze dla kilku roznych danych wejsciowych skrot jest taki sam o ile sie nie myle nazwya sie to kolizja hashy (ale moge sie mylic). Najlatwiejszy hash jaki mi przychodzi do glowy to suma elementow skladowych. albo xor tego co masz z kolejnym elementem i rolowanie tego w ktoras tam strone.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...