LINUX.ORG.RU

Вопрос по поводу коллизий хеш-функции BCrypt в PHP

 ,


0

0

Возрастает ли количество коллизий хеш-функции BCrypt (CRYPT_BLOWFISH) в случае наращивания весового параметра?

Пример 1: 2 ^ 7 = 128 итераций

$hash_1 = crypt( $password, '$2y$07$' . $salt );

Пример 2: 2 ^ 10 = 1024 итерации

$hash_2 = crypt( $password, '$2y$10$' . $salt ); // пароль и соль без изменений

Возрастает ли количество коллизий для $hash_2 по сравнению с $hash_1 ?

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

Я хоть и совсем не специалист, но имхо выскажу.

По идее поменяться ничего не должно, вероятное количество коллизий останется тоже. Может поменяться их распределение, но это и сильно от входных данных зависит. В любом случае изменится время расчёта.

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

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от Suntechnic

Вот тоже не помню. У меня закрались сомнения. Мне казалось, что blowfish — это хеш-функция, а они по определению с коллизиями. Всё, удаляюсь из треда, т.к. не компетентен.

beastie ★★★★★
()
Ответ на: комментарий от beastie

А. Ну да - вы все правильно говорите.

Но тут вот в чем дело - это не имеет отношения к данному вопросу вот почему. Необратимость хеш функции как правило это просто следствия сужения поля значений относительно поля определения. Т.е. допустим у нас текст из двух бит сворачивается в однобитный хеш. Т.е. поле определения у нас 10, 01, 00 и 11, а поле значений только 0 и 1. Соответсвенно есть колизии - хеш необратим. НО! Сворачивание происходит либо один раз - на первом шаге, либо на каждом шаге, но уже без изменения размера поля определения. А тот алгоритм которым проходятся по уже свернутому значению обратим и количество коллизий не множит. Иначе хеш функции просто бы вырождались с ростом числа итераций и причем стремительно.

Suntechnic ★★★★★
()
Ответ на: комментарий от Suntechnic

Suntechnic

А тот алгоритм которым проходятся по уже свернутому значению обратим и количество коллизий не множит. Иначе хеш функции просто бы вырождались с ростом числа итераций и причем стремительно.

По всей видимости, так и есть. Спасибо за подробный ответ.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Возрастает ли количество коллизий для $hash_2 по сравнению с $hash_1 ?

Нет, но теоретическая стойкость несколько падает.
Так или иначе сильное падение стойкости идет далеко после 100000 итераций, до этого оно в пределах 0.001%.

winddos ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.