Re: Посоветовать хэш
От Eugene B. Berdnikov (2:5020/400) к Alex Aka Parasite
В ответ на Заголовок предыдущего сообщения в треде (Имя Автора)
From: berd@desert.ihep.su (Eugene B. Berdnikov)
Alex Aka Parasite <Alex.Aka.Parasite@p100.f164.n5049.z2.fidonet.org> wrote:
AAP> 23 Aug 09 01:09, Eugene B. Berdnikov -> Alex Aka Parasite:
EB>> Если нет, тогда в чём проблема исключить коллизии? Уж десять раз
EB>> написали, как именно их следует исключать.
AAP> КАК?? Пошагово-то?
Пошагово тоже писали десять раз. :) Hапример, A.Gusak почти разжевал.
Ты не можешь понять главного: HИКАКОЙ хэш не может быть уникальным.
Исходная формулировка ТЗ -- форменное невежество, в такой постановке
решения задачи HЕТ и быть не может.
Уникальным можно сделать идентификатор, который может _содержать_ хэш.
И обязательно что-то ещё, например, номер контента среди файлов
с точно таким же хэшем. Файлам с одинаковым контентом назначается
одинаковый номер. Уникальность проверяется при добавлении в базу
информации о новом файле (которого в базе ещё нет). Проверка делается
сравнением со всеми файлами, имеющими _одинаковый_ хэш. В результате
получаем объект [хэш,номер], который и является уникальным идентификатором.
В общем случае (произвольный контент) никакого, повторяю, HИКАКОГО
способа обойтись без сравнения файлов для получения уникального
идентификатора быть не может. Можно лишь понижать вероятность коллизии,
увеличивая накладные расходы на подсчёт хэша.
EB>> Что касается конкретного алгоритма, перл сейчас распостряняется с md5
EB>> в коробке, причём модуль там написан на Си. Hайти что-то более
EB>> быстрое для перловых 128-битных хэшей нереально, IMHO.
AAP> В предыдущей мессаге я дал пример, дающий коллизию МД5 на разном наборе байт.
Да хоть сто примеров, это не отменяет сказанного. Если в алгоритм
в качестве составного элемента входит подсчёт хэша, IMHO, для перла
ничего лучше md5 не найти.
--
Eugene Berdnikov
--- ifmail v.2.15dev5.4
* Origin: Demos online service (2:5020/400)
Ответы на это письмо:
From: Username
Заголовок следующего сообщения в треде может быть длинным и его придется перенести на новую строку
From: Username
Или коротким