[pascal] Hashowanie

0

Dysponuje ktoś jakimś jak najprostszym hashowaniem? Potrzebuję kodzik, które zahashuje mi stringa do postaci liczby całkowitej. Sam nie potrafię tego napisać, a na googlach nigdzie nie mogę znaleźć.

Znalazłem jedynie taki kodzik hashujący hasła gg, ale niestety, hashe mogą sie powtarzać, a mi zależy na unikalności. po prostu, żebym mógł porównywać stringi za pomocą ich hashy potem.
Z góry dzięki za pomoc.

function Hash(S: string): Cardinal;
var
   x, y, z, i : Cardinal;
   ss: String;
begin
   y := Length(S);
   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;
0

Znalazłem jedynie taki kodzik hashujący hasła gg, ale niestety, hashe mogą sie powtarzać, a mi zależy na unikalności.

OK, to teraz powiedz mi jak chcesz w typie liczbowym o ograniczonej pojemności przechowywać nieskończenie wiele różnych wartości.

0
sadfg napisał(a)

Znalazłem jedynie taki kodzik hashujący hasła gg, ale niestety, hashe mogą sie powtarzać, a mi zależy na unikalności.

OK, to teraz powiedz mi jak chcesz w typie liczbowym o ograniczonej pojemności przechowywać nieskończenie wiele różnych wartości.

faktycznie... no zależy mi, żeby do 50 000 kombinacji dało radę przypisać różne hashe.

0

Dlaczego nie np. MD5? Masz tam 4 inty. O kolizje raczej trudno.

0

bo zależy mi, żeby hash był w postaci liczby, a nie łańcucha znaków ;)</quote>

0
Drajwer napisał(a)

Dlaczego nie np. MD5? Masz tam 4 inty. O kolizje raczej trudno.

Drajwer napisał(a)

Masz tam 4 inty.

Drajwer napisał(a)

4 inty.

Drajwer napisał(a)

4

// ;] - Ł

0
Drajwer napisał(a)
Drajwer napisał(a)

Dlaczego nie np. MD5? Masz tam 4 inty. O kolizje raczej trudno.

Drajwer napisał(a)

Masz tam 4 inty.

Drajwer napisał(a)

4 inty.

Drajwer napisał(a)

4

// ;] - Ł

:))) fajny post... poczułem się jakby wewnętrzny głos mojego sumienia do mnie przemówił ^^

1 użytkowników online, w tym zalogowanych: 0, gości: 1