存储仅用于安全登录但唯一的电子邮件

问题描述 投票:0回答:0

我目前正在做一个相当小的项目,用户数量处于低两位数。我想让登录尽可能简单,这意味着像电子邮件 + 密码这样的东西,或者理想情况下只发送带有唯一代码的电子邮件。

注意:我有时会使用散列和加密作为同义词,因为我不知道我想/可以使用哪个。

无论如何,电子邮件是每个帐户的唯一标识符。不需要将电子邮件以纯文本形式存储,因为它只需要用于登录或密码重置,因此在这两种情况下,用户都需要手动输入他的电子邮件,因此我可以比较哈希值。说的再简单点,我想加密用户用来登录的唯一标识符。

现在这就是我挣扎的地方。我加密邮箱地址,但是有几个限制:

  • 电子邮件作为唯一标识符。因此,不得发生散列冲突。尽管在我的情况下,这是不可能的,但这种可能性根本不应该存在。
  • 哈希不能依赖于未知因素,例如 AES-CBC 的随机 IV,因为这意味着对于每次登录,我必须为每个数据库条目对给定的电子邮件进行一次哈希和比较。

我目前的想法是使用 AES-CBC,电子邮件本身就是 IV。然而,这需要

AES(K, K) != AES(N, N)
,我不确定是否是这种情况,它似乎也不安全。


正如您现在可能已经猜到的那样,我对加密并不是很熟悉,但目前正在阅读它。也许我在完全错误的道路上并试图找到不存在的东西。

然而,很明显电子邮件本身需要(或应该)受到保护,我想以最好的方式为这个用例做到这一点。

database authentication encryption hash aes
© www.soinside.com 2019 - 2024. All rights reserved.