>> Даже без соли такой пароль из md5 подобрать сложно и долго.
> Совсем не факт. К этому паролю может быть трёхсимвольная коллизия.Вот этого вообще практически никто не понимает.
Вся затея об увеличении количества символов в пароле -- НИЧТО, если они хранятся в "коротком" хэше.
Для тех, кто не в курсе: после анализа стойкость MD5 к коллизиям -- ~2^80. Пароль длинее, чем в 10 символов, можете не ставить -- к ЛЮБОМУ паролю по принципу Дирихле будет существовать коллизия не длиннее, чем в 10 символов.
> Соль должна быть обязательно.
А вот это fail, тов. собеседник. :) Ну КАК salt спасёт от hash collision?
Salt -- это от паролей типа 12345678. Если без соли -- вы берёте ГОТОВЫЕ ХЭШИ самых популярных паролей и сравниваете MD5 из password-файла с этими ГОТОВЫМИ ХЭШАМИ. Пароли подбираются быстро и просто. Наличие salt'ов эту дырку закрывает -- готовых хэшей должно быть в 2^(длина соли в битах) раз больше, а ОЗУ -- оно, знаете ли, не резиновое.
Но от hash-коллизий это всё равно не спасает. Salt, скажем, в случае /etc/master.passwd лежит рядышком с криптограммой. Ну, надо будет считать не MD5(i), а MD5(salt*i), делов-то.