Это относится только к системам, которые используют односторонний метод хеширования для хранения паролей и сравнивают хэши при аутентификации.
Если от вашей системы требуется такое частое обновление, я бы сделал следующее.
Как указал Теймон, хеширование - это один из способов, и нет способа получить исходный простой текст из хэша.
В моей таблице базы данных, хранящей информацию о пользователе и пароль, я бы включил целочисленное поле уровня хеширования. Это указывает, какой метод хеширования использует пользователь.
Когда система добавляется с новым методом хэширования, будет увеличен самый высокий уровень хэширования.
Допустим, у меня уже есть 2 метода хеширования
1 MD5
2 SHA1
3 SHA256
Если я добавлю новый метод хеширования SHA512
, он станет
4 SHA512
Каждый раз, когда пользователь входит в систему, система проверяет, совпадает ли пароль пользователя с паролем в базе данных, используя указанный уровень хеширования. Здесь есть несколько случаев:
- Если хеши паролей совпадают, но уровень хеширования пользователя не самый высокий уровень хеширования, предлагаемый системой, тогда хешируйте входной пароль пользователя, т.е. обычный текст, используя самый высокий уровень хеширования, и устанавливайте уровень хеширования. пользователя до самого высокого уровня хеширования. Пользователь аутентифицируется.
- Если хеши паролей совпадают, а уровень хеширования пользователя является самым высоким уровнем хеширования, то пользователь проходит аутентификацию.
- Если хеши паролей вообще не совпадают, то пользователю отказано.
Это означает, что всякий раз, когда вы обновляете уровень хеширования системы, пароль пользователя обновляется только до самого высокого уровня при следующей аутентификации.