Как стать автором
Обновить

Комментарии 7

вот только не очень понятно, причем здесь комментарий о радужных таблицах; ну построим мы исходную последовательность случайных чисел, и что это даст?

и примерно из этой же области, почему md5 сильно хуже sha?
по поводу sha1 и md5:
если я не ошибаюсь то у sha1 меньше вероятность коллизии да и исходя из тех материалов что я читал md5 взломан как на теории так и на практике, в то время как sha1 взломали только на теории, а на практике взлом этого алгоритма неосуществим из-за больших временных затрат.
> Я также попытался воспроизвести ее на виртуальной машине под Windows XP(так как он был самый простой способ получить PHP с недостатками генератора случайных чисел), с успехом, конечно же. Поскольку на этих двух машинах я получил много коллизий, то скорей всего даже на более совершенных системах ошибка может быть использована с некоторым усилием.
Ну и где же результаты ваших тестов?

Я сгенерировал при помощи функции, в которой вы нашли «коллизии» 10 миллионов псевдослучайных значений и прогнал через уникализатор — не было ни одной коллизии, и это при том, что я намерянно допустил вашу ошибку №4 и сгенерировал это всё в рамках 2х сессий (по 5 млн) и даже не инициализируя генератор случайных чисел!

Согласитесь что 10 000 000 попыток авторизации это достаточно много чтобы система автоматически заблокировала IP ну или администратор увидел неладное.

Можете попробовать сами:
<?php
    function generateRandomKey($len = 20)
    {
       $string = '';
       $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
       for ($i = 1; $i <= $len; $i++)
       {
         $string .= substr($pool, rand( 0, 61), 1);
       }

      return md5($string);
    }
    
    $f = fopen('out.txt', 'a+');
    for ($i = 0; $i < 5*1000*1000; ++$i)
      fwrite($f, generateRandomKey()."\n");
    fclose($f);


Полученный файл на 320 Мб прогоняем через поиск дубликатов: cat out.txt | sort | uniq -dc

Топикстартер, жду ваш тест.
>Ну и где же результаты ваших тестов?
если вы обратите внимание и взгляните на оригинал статьи то увидите что это перевод, а не мои личные рассуждения, так что можете переадресовать вопросы автору статьи в блог.

если вы взгляните на ссылку что я дал в самом конце, а именно discover-symfony.blogspot.com/2010/07/achtung-sfguardplugin-symfony.html то увидите пример появления коллизий.

Что касается меня лично, то когда я тестировал эту функцию мне коллизий не попалось.

Можете так же изучить тикет trac.symfony-project.org/ticket/7018

Я пожалуй склонюсь к мнению что раз на раз не приходится, у меня и у вас коллизий не появилось, а у кого-то их вылезет столько, что страшно станет.

Извините, действительно не заметил что это лишь перевод.

Прогнал тест по ссылке discover-symfony.blogspot.com/2010/07/achtung-sfguardplugin-symfony.html — у меня снова без коллизий, подозреваю что проблема в том, что я это делал в linux, а ребята в windows. Как всё таки важно правильно выбрать хостинг :)
судя по информации в тикете коллизии были найдены при использовании сервера на gentoo
Какая разниця какая ОС используется, если алгоритм независим от того где он реализуется.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации