azsx писал(а):что Вы Виталий не прав.
Я не прав???????????????? Вы серьёзно?????????????????????????!
Модератор: Модераторы
azsx писал(а):что Вы Виталий не прав.
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;
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;
azsx писал(а):результат тот же
azsx писал(а):я знаю, что Вы Виталий не прав
azsx писал(а):я знаю, что Вы Виталий не прав
azsx писал(а):я знаю, что Вы Виталий не прав
azsx писал(а):я знаю, что Вы Виталий не прав
azsx писал(а):я знаю, что Вы Виталий не прав
serbod писал(а):Для md5 есть способы быстро подобрать исходные данные, чтобы получить нужный хеш (создать коллизию). Это значит, что md5 не пригоден как электронная подпись, как защита от подделки.
Но как контрольная сумма для сравнения данных на совпадение он очень даже годится. Для структурированных данных (текст, html) достаточной длины вероятность коллизии настолько мала, что можно считать невозможной. Чтобы вызвать коллизию, нужно изменить содержимое так, что оно будет выглядеть как мусор.
Однако, полностью полагаться на вероятность не позволяет моя профессиональная паранойя. Я уже сталкивался по работе:
- со сбоями контроля целостности в TCP;
- с недостаточно равномерным распределением ключей в хеш-таблицах;
- с гарантированной повторяемостью генераторов случайных чисел;
- со сбоями алгоритмов поиска и конвертации данных;
и поэтому на всякий случай делаю дополнительные проверки, которые работе не мешают, но иногда спасают меня от неприятностей.
serbod писал(а):Чтобы вызвать коллизию, нужно изменить содержимое так, что оно будет выглядеть как мусор.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8