, О, и нанять разработчика / изучают навыки проектирования.:)
Хранение соли в незашифрованном виде в базе данных рядом с хешированными паролями не проблема.
Назначение соли не должно быть секретом. Его цель состоит в том, чтобы быть разным для каждого хэша (то есть случайным), и быть достаточно длинным, чтобы предотвратить использование радужных таблиц , когда злоумышленник получает в свои руки базу данных.
См. Этот отличный пост по теме Томаса Птачека.
edit @ZJR : даже если бы соли были полностью общедоступными, они все равно лишили бы преимуществ радужных таблиц. Когда у вас есть соленые и хешированные данные, лучшее, что вы можете сделать, чтобы отменить их, - это грубая сила (при условии, что хеш-функция криптографически безопасна).
edit @ n10i : См. Статью в Википедии для secure hash функция . Что касается размера соли, то популярный bcrypt .
Пожалуйста, найдите время, чтобы прочитать это очень хорошее описание солей и хеширования
Salt Generation и программного обеспечения с открытым исходным кодом