Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
3-48923
danco
2002-12-18 20:07
2003.01.16
Сортировка по украинскому алфавиту


7-49329
Stranger
2002-11-04 10:20
2003.01.16
Перехват и обработка системных сообщений


3-48894
oleon
2002-12-20 12:50
2003.01.16
Как определить имя компьютера в MS SQL с которого подключилсь?


14-49213
Igor_thief
2002-12-28 19:50
2003.01.16
Как утсановить свойство TopItem у ListView?


3-48955
BlueDragon
2002-12-19 14:56
2003.01.16
Проблемы с BDE из Windows2000





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский