Что я пытаюсь сделать
Я работаю над приложением Password Manager и пытаюсь найти способ безопасного и удобного осуществления шифрования записей. У меня есть следующие мысли:
В моей базе данных будет таблица, в которой будут храниться пользователи, включая их пароли, хэшированные с помощью BCrypt. Я не хочу использовать этот хеш в качестве ключа для шифрования, потому что, если база данных будет украдена, злоумышленник сможет легко получить записи в виде простого текста.
Моя идея
Моя идея - использовать SHA-256 пароля пользователя в качестве ключа для шифрования. Поток должен быть следующим:
- Пользователь входит в систему с открытым текстом.
- Его BCrypted пароль хранится в UserDetailsImpl.
- После того, как Spring удостоверится, что пароль совпадает с логином, я хочу добавить этот незашифрованный пароль с
SHA-256
к зарегистрированным данным пользователя.
Причина в том, что я хочу использовать этот другой хеш в качестве ключа для шифрования.
Проблема
Вот мои два вопроса:
- Можно ли это сделать весной (пункт 3)?
- Безопасен ли этот подход или, по крайней мере, не является анти-паттерном (использовать другой хеш, а не хранить пароль пользователя в памяти, когда он не нужен)?