Я использую ключ, который хранится в базе данных и используется для дешифрования данных из базы данных с помощью Halite.Чтобы получить этот ключ, я подумал об использовании Argon2i, хешировании пароля и сохранении его в БД вместе с солью.
У меня есть пользователи, которые вводят общую парольную фразу (это в основном второй логин посленачальный логин для своей учетной записи) затем используйте halite
public function login_secure(Request $request)
{
$form = $this->createForm(LoginSecureType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$view = $form->getData();
$options = [
'memory_cost' => $ram,
'time_cost' => $time,
'threads' => $threads
];
//Only one row in the database table
$encryption = $this->getDoctrine()
->getRepository(Encryption::class)
->find(1);
if (password_verify($view->getPassword(), $encryption->getPassword())) {
$encryption_key = EncryptionKey::deriveFromPassword(
$view->getPassword(),
$encryption->getSalt()
//TODO: Store $encryption_key in session variable
);
}
}
Это безопасный способ хранения $ encryption_key?