Зашифруйте пароль, НЕ хешируйте его.
Когда вы хешируете пароль, вы теряете пароль навсегда и получаете «проекцию» самого пароля, которая не позволяет вернуться и произвестиоригинальный пароль.Хеширование, как правило, является самым безопасным вариантом аутентификации, поскольку никто не может воспроизвести исходный пароль.Но вы не можете хэшировать его, поскольку в какой-то момент вам нужен пароль обратно.
Поэтому зашифруйте его.Существует несколько классов шифрования, от самого базового до самого сильного.Я не знаю, насколько безопасно вы хотите шифрование.Вот простой (не полный) список типичных опций:
1.Кодировка
Кодировка НЕ является шифрованием.Когда мы кодируем некоторые данные, мы заменяем символы другими.Вспомните о 2000-летнем ROT-13, который использовал Юлий Цезарь (не так ли?).A
становится H
, B
становится T
и т. Д. В любом случае это НЕ шифрование, а всего лишь простое преобразование, которое обманет ребенка или человека, не имеющего только технического образования.Другие наиболее типичные кодировки включают Base-64 и простое шестнадцатеричное.
2.Слабое шифрование
Слабое шифрование включает в себя все симметричное шифрование, в котором не используется соление, а также внутренние или короткие ключи (менее 256 бит).Типичным случаем является использование простых паролей.
3.Среднее шифрование
Это включает в себя симметричное шифрование с большими паролями (или ключами с длиной бит 256 или более), засолкой, но внутренними паролями / ключами.Это очень полезно, и я принимал эту стратегию несколько раз.Соль хранится в виде первых 16 байтов закодированного значения.При дешифровании соль отделяется от закодированного значения (это всегда 16 байтов).
4.Надежное шифрование
По сути, шифрование среднего класса, но с добавлением решения для управления ключами.Ключ больше не фиксируется и не сохраняется в самом приложении, но при необходимости надежно восстанавливается извне.Ключ управляется внешними процессами и периодически меняется.Это влечет за собой дополнительную обработку в вашем приложении.
Итог
В вашем случае я бы использовал вариант № 3 Среднее шифрование, если у вас нет веских причин для попыткиВариант № 4.Для меня # 4 излишне.