我正在实现一个存储在数据库中的密钥,该密钥用于使用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的安全方法吗?