Форум: "Прочее";
Текущий архив: 2009.08.09;
Скачать: [xml.tar.bz2];
Вниз
Алгоритмы хеширования Найти похожие ветки
← →
@!!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;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.009 c