Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.09;
Скачать: CL | DM;

Вниз

Алгоритмы хеширования   Найти похожие ветки 

 
@!!ex ©   (2009-06-09 01:32) [40]

> [38] antonn ©   (09.06.09 01:27)

ну так хэш не гарантирует уникальность...


 
antonn ©   (2009-06-09 01:33) [41]

гуид в общем то тоже, но используется :)


 
@!!ex ©   (2009-06-09 01:35) [42]

> [41] antonn ©   (09.06.09 01:33)

почему гуид то не гарантирует? :)


 
antonn ©   (2009-06-09 01:38) [43]

потому что "кол-во информации" в нем конечно, 2^128 вариантов :)


 
{RASkov} ©   (2009-06-09 01:39) [44]

> [37] @!!ex ©   (09.06.09 01:22)
> Вообще какая цель то приследуется?

есть пути, например:
C:\Dir1\Dir2\Dir3\Dir4
C:\Dir1\Dir4\
нужно в файле типа ини сделать запись секцию с папкой и перечисленные файлы из указанной папки без вложенных подпапок...
Должно получится нечто:
[хеш от DIR ниже]
DIR=C:\Windows\Font
File1=name1.ttf
File2=name2.ttf
File3=name3.ttf
...и т.д.
так же нужно потом создать в отдельном каталоге их(файлов) копии. Должно получится нечто:
RootDir
     |-папка с файлами каталога C:\Dir1\Dir2\Dir3\Dir4 вот имя ей нужно придумать уникальное
     |-папка с файлами каталога C:\Dir1\Dir4 тоже самое
например просто Dir4 не подойдет. т.е.
RootDir
     |-Dir4
     |-Dir4
не уникально.
В тоже время путать файлы нельзя.
А вот нечто так:
[00AF76F3]
DIR=C:\Dir1\Dir2\Dir3\Dir4
File1=name1.ext
File2=name2.ext
File3=name3.ext
...и т.д.
RootDir
     |-00AF76F3
     |-примерно тоже самое (другой хеш)
думаю самое то.
Нужно иметь возможность восстановить файлы на место потом. Т.е. забрал - вернул где взял
Сорри.... если сумбурно объяснил, голова уже не варит :(


 
@!!ex ©   (2009-06-09 01:47) [45]

> [44] {RASkov} ©   (09.06.09 01:39)

Я понял. Рискуешь получить проблемы. хэш никак не гарантирует уникальность.


 
antonn ©   (2009-06-09 01:51) [46]


> @!!ex ©   (09.06.09 01:47) [45]

больше хеш - меньше вероятность :)


 
vuk ©   (2009-06-09 02:18) [47]

Если нужно не сильно навороченное хеширование, то вот. Тупо и быстро.
function CalcHash( Data : pointer; DataSize : integer ) : integer;
register;
asm
 push ebx
 push esi
 push edi
 mov esi, Data
 xor ebx, ebx      { ebx will be hash }
 or esi, esi       { Data is nil? }
 jz @@Exit
 mov edx, DataSize {edx = length}
 or edx,edx        {length zero?}
 jz @@Exit
 xor ecx,ecx      {ecx is shift counter}

@@Cycle:
 xor eax,eax
 mov al,[esi]     {eax = data byte }
 inc esi
 rol eax,cl       {rotate character}
 xor ebx,eax      {xor with hash}
 inc ecx          {increment shift counter (rol uses only bottom 5 bits)}
 dec edx
 jnz @@Cycle

@@Exit:
 mov eax,ebx
 pop edi
 pop esi
 pop ebx
end;

function StrCalcHash( const S : string ) : integer;
begin
 Result := CalcHash( pointer( S ), length( S ));
end;


 
TIF ©   (2009-06-09 04:00) [48]


> Сбственно никак не найду алгоритм MD4 на делфи.


1) Delphi Encryption Compendium
Version 5.2

Есть шифрование, есть и хеши:
THash_MD2               - MD2  
THash_MD4               - MD4
THash_MD5               - MD5
THash_SHA               - SHA
THash_SHA1              - SHA 1
THash_SHA256            - SHA 256 bit
THash_SHA384            - SHA 384 bit
THash_SHA512            - SHA 512 bit
THash_Sapphire          - Sapphire
THash_Panama            - Panama
THash_Tiger             - Tiger
THash_RipeMD128         - RIPE MD 128 bit
THash_RipeMD160         - RIPE MD 160 bit
THash_RipeMD256         - RIPE MD 256 bit
THash_RipeMD320         - RIPE MD 320 bit
THash_Haval128          - Haval 128 Bit
THash_Haval160          - Haval 160 Bit (3 Rounds)
THash_Haval192          - Haval 192 Bit (4 Rounds)
THash_Haval224          - Haval 224 Bit (4 Rounds)
THash_Haval256          - Haval 256 Bit (5 Rounds)
THash_Whirlpool         - Whirlpool
THash_Whirlpool1        - Whirlpool 1
THash_Square            - Square
THash_Snefru128         - Snefru 128 Bit
THash_Snefru256         - Snefru 256 Bit


2) DCPcrypt Cryptographic Component Library v2

Аналогичная мощная библиотека, внутри хешей и функций шифрования не меньше

3) Что недавно видел из "скоростного"
На http://delphikingdom.com две статьи

Параллельное вычисление CRC32
http://delphikingdom.com/asp/viewitem.asp?catalogid=1399

Параллельное вычисление CRC64
http://delphikingdom.com/asp/viewitem.asp?catalogid=1401


 
test ©   (2009-06-09 08:27) [49]

http://www.google.ru/codesearch?as_q=md4&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%BA%D0%BE%D0%B4%D0%B0&hl=ru&as_lang=pascal&as_license_restrict=i&as_license=&as_package=&as_filenam e=&as_case=

Ну и мои 5 копеек ))


 
TUser ©   (2009-06-09 09:31) [50]

На скорую руку - это вообще xor.


 
Ega23 ©   (2009-06-09 10:08) [51]


> почему гуид то не гарантирует? :)


В феврале прошлого года обсуждали.


 
{RASkov} ©   (2009-06-09 10:17) [52]

Спасибо всем.
Я вот тут с утра подумал, что проще сделать вот так:
[DIR4]
DIR=C:\Dir1\Dir2\Dir3\Dir4
File1=name1.ext
File2=name2.ext
File3=name3.ext
...и т.д.

[DIR4_1]
DIR=C:\Dir1\Dir4\
File1=name1.ext
File2=name2.ext
File3=name3.ext
...и т.д.

ну и коталог строить по такому же принципу:
RootDir
     |-Dir4
     |-Dir4_1
Т.е. вместо хэша использовать счетчик....:) И то, этот считчик только нужен при одинаковых именах конечных папок(которые в DIR=)...
Dir:=ExtractFileName(OldDir);
while DirectoryExist(NewDir+Format("%s_%d", [Dir, N]) do INC(N);
в таком плане вообщем...)



Страницы: 1 2 вся ветка

Текущий архив: 2009.08.09;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.014 c
2-1244880706
leonidzaharov
2009-06-13 12:11
2009.08.09
TTpageControl


15-1244082212
alert2006
2009-06-04 06:23
2009.08.09
Помогите решить задачу


1-1211807607
Jungle
2008-05-26 17:13
2009.08.09
"Правильно" преобразовать тип Variant


2-1244711390
Petr
2009-06-11 13:09
2009.08.09
Поиск числа


15-1244202663
KSergey
2009-06-05 15:51
2009.08.09
Параметры (прокси) для аккаутна system