Предположим, у вас есть такая функция хеширования:
password_hash = MD5(password)
С учетом хеша, скажем, 5f4dcc3b5aa765d61d8327deb882cf99, вы предпочитаете генерировать хэши всех слов в словаре, используя вышеупомянутую функцию, а затем сравнивать password_hash с тем, который вы хотите изменить.
Теперь предположим, что вы изменили свою функцию хеширования на
password_hash = password
for i = 1 to 100
password_hash = MD5(password_hash)
next
Как злоумышленник, на этот раз вам придется хэшировать каждое слово в вашем словаре 100 раз, чтобы сравнить его с данным хэшем, который вы хотите использовать грубой силой. Следовательно, злоумышленнику потребуется гораздо больше времени для того, чтобы перебрать указанный хеш, если вы много раз хешировали свой пароль.
Именно для этой цели быстрые алгоритмы хеширования, такие как семейство MD5 и SHA, не очень подходят для хеширования паролей. Вы можете прочитать http://codahale.com/how-to-safely-store-a-password/, чтобы понять, как медленный алгоритм, такой как bcrypt, больше подходит для хеширования пароля.