Я разместил эту ссылку в комментарии к ответу Слэда, но стоит отдельного поста.
http://codahale.com/how-to-safely-store-a-password/
Звучит так, будто вам дали совет засолить хэши паролей (я думаю, вы называете соль "ключом"). Это лучше, чем просто хеш, так как делает ненужными радужные таблицы. Радужная таблица принимает широкий диапазон возможных паролей (например, диапазон паролей, как у радуги диапазон цветов) и вычисляет их хэши md5 заранее. Затем, чтобы развернуть md5, просто посмотрите md5 в таблице.
Однако, совет быстро устареет. Аппаратное обеспечение теперь достаточно быстрое, поэтому ненужные радужные таблицы: вы можете очень быстро вычислять хэши, достаточно быстро, чтобы каждый раз просто взламывать пароль с нуля, особенно если вы знаете соль. Таким образом, решение состоит в том, чтобы использовать более дорогой в вычислительном отношении хеш, который сделает грубую силу намного медленнее.
Золотой инструмент для этого - bcrypt
.