Повторное шифрование не поможет с вашей проблемой.
Единственное, что вы можете сделать, это создать многочастный хеш, и надеяться, что атакующий не получит их все. Я обычно использую соль из двух частей:
Одна часть представляет собой случайное для каждого пользователя значение, хранящееся в базе данных вместе с паролем.
Другая часть - соль для каждого применения. Вы можете сохранить его в конфигурации приложения или в специальном хранилище паролей, которое предлагает ОС.
Преимущество этого разделения состоит в том, что недостаточно, если злоумышленник просто получает доступ к базе данных, но ему нужно получить доступ к тому месту, где хранится соль вашего приложения. Так, например, простого SQL-инъекции, крадущего вашу базу данных, недостаточно. Если злоумышленник может выполнить код, он, вероятно, вообще не поможет.
И вам следует использовать какой-то метод для замедления хеширования. Типичные хэш-функции бывают быстрыми, поэтому перебор также быстр. Но если вы повторяете хэш-функцию миллион раз, это все равно не сильно замедляет действительный вход в систему, но сильно замедляет грубую обработку.
Этого можно добиться, используя функцию получения ключа на основе пароля , например PBKDF2.