Форум: "Потрепаться";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];
ВнизHash-функция Найти похожие ветки
← →
volph7777 (2002-12-27 10:42) [0]Дайте на длефи функцию генерации хэш-значения. Заранее спасиба
← →
Roma (2002-12-27 10:53) [1]Некорректный вопрос. Ты определись, что тебе нужно... А то ситуация похожа на такое: пришел на базар и попросил - "дайте мне фрукт"... ;) Только разных фруктов все-таки ограниченное количество, а хэш-функций - бесконечное...
← →
volph7777 (2002-12-27 10:54) [2]не важно, любой фрукт! только что бы значение не маленькое было
← →
Skier (2002-12-27 10:59) [3]Самая примитивная :
const
HASH_TABLE_SIZE = ???
function SimpleHash(const AIdentName : String) : Integer;
var
ii : Integer;
begin
Result := 0;
for ii := 1 to Length(AIdentName) do
Result := Result + Ord(AIdentName[ii]);
Result := Result mod HASH_TABLE_SIZE;
end;
← →
mrcat (2002-12-27 11:00) [4]конкретно - какое?
← →
Roma (2002-12-27 11:07) [5]Например, подсчет контрольной суммы файла - это тоже хэш-функция... Их бесконечно много. Хэш-функция преобразует одно (или несколько) значение одного (или нескольких) типа в значение(-я) другого (или того же самого) типа, с потерей (хотя и не обязательной) информации об аргументах, т.е., обратного преобразования может и не быть. Ты все-таки определись, чего хочешь...
← →
Ketmar (2002-12-27 11:28) [6]>volph7777 (27.12.02 10:54)
для "не маленького" значения просто возьми ВСЕ данные. чем больше данных, тем больше значение. уникальность = 100%
Satanas Nobiscum! 27-Dec-XXXVII A.S.
← →
handra (2002-12-27 11:43) [7]unit hash32;
interface
type
u32 = Cardinal;
function GetHash32(const AString: string): u32;
implementation
uses SysUtils;
const
DELTA = $9E3779B9;
FULLROUNDS = 10;
PARTROUNDS = 6 ;
function GetHash32(const AString: string): u32;
const
k: Array [0..3] of u32 =
($9464a485, $542e1a94, $3e846bff, $b75bcfc3);
var
h0,h1: u32;
a,b,c,d: u32;
procedure TEACORE(rounds: Integer);
var sum,b0,b1: u32;
n: Integer;
begin
sum := 0;
n := rounds;
b0 := h0;
b1 := h1;
repeat
Inc(sum,DELTA);
Inc(b0,((b1 shl 4)+a) xor (b1+sum) xor ((b1 shr 5)+b));
Inc(b1,((b0 shl 4)+c) xor (b0+sum) xor ((b0 shr 5)+d));
Dec(n);
until n=0;
Inc(h0,b0);
Inc(h1,b1);
end;
var
pad: u32;
mlen,len: Integer;
_msg,msg: PChar;
begin
h0 := k[0];
h1 := k[1];
len := Length(AString);
pad := u32(len) or (u32(len) shl 8);
pad := pad or (pad shl 16);
len := ((Length(AString) div 16) + 1) * 16;
if len=Length(AString)-16 then Dec(len,16);
mlen := (Length(AString) div 4) * 4;
GetMem(msg,len);
_msg := msg;
while mlen<=len-4 do begin
Move(pad,msg[mlen],sizeof(pad));
Inc(mlen,sizeof(pad));
end;
Move(AString[1],msg[0],Length(AString));
while(len >= 16) do begin
a := ord(msg[0]) or
(ord(msg[1]) shl 8) or
(ord(msg[2]) shl 16) or
(ord(msg[3]) shl 24);
b := ord(msg[4]) or
(ord(msg[5]) shl 8) or
(ord(msg[6]) shl 16) or
(ord(msg[7]) shl 24);
c := ord(msg[8]) or
(ord(msg[9]) shl 8) or
(ord(msg[10]) shl 16) or
(ord(msg[11]) shl 24);
d := ord(msg[12]) or
(ord(msg[13]) shl 8) or
(ord(msg[14]) shl 16) or
(ord(msg[15]) shl 24);
TEACORE(PARTROUNDS);
Dec(len,16);
Inc(msg,16);
end;
TEACORE(FULLROUNDS);
Result := h0 xor h1;
ReallocMem(_msg,0);
end;
end.
← →
Ketmar (2002-12-27 12:29) [8]кстати, как качественен TEA (если сравнивать с MD5)?
Satanas Nobiscum! 27-Dec-XXXVII A.S.
← →
Sha (2002-12-27 13:00) [9]http://www.cobans.net/files/HashLib!.zip
← →
Jeer (2002-12-27 13:03) [10]Выбирай на вкус
MD4 16 byte
MD5 16 byte
SHA 20 byte
SHA1 20 byte
RMD128 16 byte
RMD160 20 byte
RMD256 32 byte
RMD320 40 byte
Haval256 32 byte
Haval224 28 byte
Haval192 24 byte
Haval160 20 byte
Haval128 16 byte
Sapphire320 40 byte
Sapphire288 36 byte
Sapphire256 32 byte
Sapphire224 28 byte
Sapphire192 24 byte
Sapphire160 20 byte
Sapphire128 16 byte
Snefru 32 byte
Square 16 byte
Tiger 24 byte
← →
mrcat (2002-12-27 13:55) [11]Ketmar © (27.12.02 12:29)
как их можно сравнивать? MDx - изначально разрабытывались, как хэш-функция, а TEA - как алгоритм шифрования, ИМХО.
← →
Ketmar (2002-12-27 14:37) [12]разве "чай" - шифровалка? если так, то извиняюсь - протупил. это бывает. особенно если намедни решали, как новый год праздновать будем и репетировали %-))
Satanas Nobiscum! 27-Dec-XXXVII A.S.
← →
mrcat (2002-12-27 14:48) [13]Ketmar © (27.12.02 14:37)
бывает =)))))))
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.02 c