В то время как передовая практика хранения паролей требует, чтобы они хранились в хешированном формате с уникальной солью, первоначальный вопрос на самом деле поднимает довольно хороший вопрос: если вы храните соль в другом месте, чем хэши, влияние раскрываемые хэши уменьшены.
1) Если пароли были только хэшированы и сохранены в базе данных, а сайт подвергся SQL-инъекции, то злоумышленник может «взломать» хэши
2) Если пароли были хэшированы с помощью соли, и оба хеша и соли были в базе данных, и сайт имел SQL-инъекцию, то злоумышленник мог бы «взломать» хэши, но потребовал бы больше вычислительных усилий (так как нет увеличения производительности из предварительно вычисленных таблиц)
3) Если пароли были хэшем с солью, а соль хранилась в другом месте, то SQL-инъекция предоставила бы злоумышленнику мало рычагов для определения действительного пароля.
Сценарий 1, очевидно, является самым слабым, но разница в безопасности между 2 и 3 менее очевидна и зависит от относительной вероятности раскрытия кода SQL-инъекцией по сравнению с серверной частью (и связанными классами уязвимости).
Чему вы доверяете больше - вашей способности защищаться от SQL-инъекций или способности Apache / PHP / What угодно для защиты содержимого на стороне сервера.
Вещи никогда не бывают простыми, и я на самом деле думаю, что идея в ОП имеет больше смысла, чем другие ответы.
(При генерации паролей вы можете использовать и соль, хранящуюся в базе данных, и ключ, если вам нравится храниться в источнике веб-приложения).