Все остальные ответы верны, но до сих пор никто не объяснил почему соль есть.
В Википедии есть хорошая страница о солях и Радужных таблицах , которые являются основной причиной, по которой у нас есть соли.
Без соли крипта - это в основном односторонняя хеш-функция. Для этого потребуется ввести пароль и вернуть хешированную версию этого пароля. Таблицы Rainbow
предоставляют оптимизированный метод для устранения однонаправленной природы этого хэша и возврата исходного пароля.
Если вам удастся получить хешированные пароли (с помощью какого-либо эксплойта базы данных или доступа к файлу /etc/passwd
или /etc/shadow
), вы теоретически можете знать пароли многих людей.
Соль добавляет дополнительный «случайный» фактор к смеси. Вам нужно создать случайную соль и сохранить ее где-нибудь (с паролем все в порядке, но лучше отдельно). Теперь одного набора радужных таблиц недостаточно, вам вдруг понадобится 65 536 наборов таких таблиц (в случае двухбайтовой соли). Соль также может храниться отдельно от пароля, добавляя дополнительные препятствия.
Соль также помогает предотвратить появление у пользователей с одинаковыми паролями одинакового пароля; соль обычно выбирается случайным образом, и если соли отличаются, то хешированные пароли будут сильно отличаться.
Я также укажу на эту запись в блоге, объясняющую некоторые основы пароля , которые я нашел очень информативными.