- Код: Выделить всё
setLength(md5Array, md5max * 2 );
for i := 0 to md5max * 2 - 1 do begin
if in_array(md5(i), md5Array) then ShowMessage('Это уже '+IntToStr(i)+' совпадение хэша!');
md5Array[i] := md5(i);
end;
У Вас будет size(md5max) (точнее 128-битное число) - совпадений, т.к. прогоняется 256 битный цикл, в который 128 битное число умещается как раз ровно два раза. И совпадений хэша будет 128 - битное число раз, т.к. иначе технически не возможно. Это всё равно что байт, прогнать 512 раз и утверждать что, число 255, при 512 инкрементных итерациях повторится только 1 раз.
И я неправ?????
Я ещё могу понять и поверить, что в МВД, СК, прокуратурах и судах не знают, что такое камертон и балалайка.
Я ещё могу понять и поверить, что в МВД, СК, прокуратурах и судах не знают, что такое камертон и гитара.
Но чтобы программист утверждал, что у 256 битного числа не будет 128 битное число повторов 128-битных хэшей в 256-битном цикле... это нонсенс!
Это всё потому что, Вы слушаете иронизирующих диверсантов, а не умных и логичных художников.
И благодаря этому происходят аварии т.к. программистов вводят в заблуждение.
И никакого юмора! Всё серьёзно!!!
Вот проверочный код попробуйте и убедитесь, что ТЕХНИЧЕСКИ невозможно сделать уникальный 128-битный хэш даже для 256 битных чисел, т.к. это невозможно также и для байтовых чисел из нижеприведённого примера:
- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var
b,c:byte;
i:integer;
begin
b:=0;
c:=0;
for i:= 0 to 1024 do begin
inc(b);
if (b = 255) then begin
inc(c);
ShowMessage('Это число 255 повторяется уже '+IntToStr(c)+' раз');
end;
end;
end;
Добавлено спустя 11 минут 11 секунд:azsx писал(а):результат тот же
И результат НОВОГО-ЖЭШ-ИНДЕКСА - ДАЛЕКО не тот же, а на 100% более устойчивый и надёжный. И тройной хэш, можно применять в качестве УНИКАЛЬНОГО ИНДЕКСА, т.к. он для этого придуман. А просто хэш позволяет сверить лишь целостность слова, но просто ХЭШ - не может быть УНИКАЛЬНЫМ ИНДЕКСОМ. И я Вас не принуждаю использовать НОВЫЙ-ХЭШ-ИНДЕКС, если Вам достаточно 128-битного хэша, который Вы с Ваших слов используете или предлагаете использовать, в качестве УНИКАЛЬНОГО ИНДЕКСА, то
флаг Вам в руки, т.к. возможно для Ваших задач его хватит с избытком!
Добавлено спустя 111 часов 111 минут 111 секунд:azsx писал(а):я знаю, что Вы Виталий не прав
1 марта 2005 года Арьен Ленстра, Ван Сяоюнь и Бенне де Вегер продемонстрировали построение двух документов X.509 с различными открытыми ключами и одинаковым хешем MD5.
https://ru.wikipedia.org/wiki/MD5Добавлено спустя 77 секунд:azsx писал(а):я знаю, что Вы Виталий не прав
18 марта 2006 года исследователь Властимил Клима (Vlastimil Klima) опубликовал алгоритм, который может найти коллизии за одну минуту на обычном компьютере, метод получил название «туннелирование»
https://ru.wikipedia.org/wiki/MD5Добавлено спустя 77 секунд:azsx писал(а):я знаю, что Вы Виталий не прав
В конце 2008 года US-CERT призвал разработчиков программного обеспечения, владельцев веб-сайтов и пользователей прекратить использовать MD5 в любых целях, так как исследования продемонстрировали ненадёжность этого алгоритма
https://ru.wikipedia.org/wiki/MD5Добавлено спустя 77 секунду:azsx писал(а):я знаю, что Вы Виталий не прав
24 декабря 2010 года Тао Се (Tao Xie) и Фэн Дэнго (Feng Dengguo) впервые представили коллизию сообщений длиной в один блок (512 бит)[9]. Ранее коллизии были найдены для сообщений длиной в два блока и более. Позднее Марк Стивенс (Marc Stevens) повторил успех, опубликовав блоки с одинаковым хешем MD5, а также алгоритм для получения таких коллизий
https://ru.wikipedia.org/wiki/MD5Добавлено спустя 77 секунд:azsx писал(а):я знаю, что Вы Виталий не прав
В 2011 году был опубликован информационный документ RFC 6151. Он признаёт алгоритм хеширования MD5[2] небезопасным для некоторых целей и рекомендует отказаться от его использования.
https://ru.wikipedia.org/wiki/MD5Так в чём же, я не прав-то, если вместе со мной, ещё куча умных и образованных людей - утверждают примерно тоже самое и даже доказали ненадёжность и коллизии md5 алгоритма?.