Как правило, пароли засоляются и хэшируются перед их сохранением на жестком диске системы.Мне кажется, что вы пишете сценарий хранения пароля на стороне клиента.Поэтому я бы порекомендовал алгоритмы хеширования SHA-2
или bcrypt
, чтобы сделать ваши пароли неразборчивыми перед их сохранением.Не используйте MD5
или SHA-1
для хэширования ваших паролей, поскольку они имеют известные уязвимости.
При сравнении предоставленного пользователем пароля и реального пароля они не сравниваются в открытом тексте.Пользовательский пароль сначала засоляется, затем хэшируется.Полученный хэш сравнивается с хешем «правильного» пароля, который хранится на диске.При использовании этого метода открытый текстовый пароль никогда не сохраняется на диске.Кроме того, поскольку вероятность совпадения двух хэшей чрезвычайно низка, это считается более безопасной практикой, чем хранение незашифрованных паролей (намного, гораздо более безопасная практика, поскольку хеши очень трудно перевернуть, даже если злоумышленник знает хэш).
В этом потоке есть несколько интересных реализаций соления и хэширования, включая реализацию bcrypt
. Солт и хеширование пароля в python
A учебник безопасного хранения паролей может помочь вам в вашем путешествии.
Имейте в виду, что криптография имеет своинедостатки.Атаки с помощью радужных таблиц, атаки по времени и известные атаки по незашифрованному тексту - это все, что необходимо понимать при переходе на хранение криптографических паролей.При этом криптография является очень уважаемой областью, которая, как известно, обеспечивает хорошую безопасность.
Я бы порекомендовал вам присоединиться к Криптографическому форуму Stack Exchange