Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1244481707
Gydvin
2009-06-08 21:21
2009.08.09
глюки при умножении


2-1244714758
Ivba
2009-06-11 14:05
2009.08.09
TCobmoBox без DropDown


15-1244798237
Артур Пирожков
2009-06-12 13:17
2009.08.09
Почему в Explore грузится, а в Опере или Лисе нет?


2-1243594194
DevilDevil
2009-05-29 14:49
2009.08.09
Разные результаты StretchBlt


15-1244565458
Rimdus
2009-06-09 20:37
2009.08.09
Перекрыть приватный метод





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский