我正在建立一个匿名网站。所以基本上用户的帐户不能追溯到任何实际的人(例如通过电子邮件地址)。身份验证是我想了解您的想法的部分。如果我使用电子邮件/通行证组合进行身份验证,我可以使用 bcrypt 来散列电子邮件地址和密码吗(我知道这是可能的,但是否实用)?我想如果电子邮件是加密的,那么搜索数据库以找到匹配项会非常慢。这是真的/假的吗?你都有些什么想法呢?还有其他想法吗?基本上,我对任何关于如何进行身份验证的想法持开放态度,但如果它是通过电子邮件进行身份验证的,那么它就不能被公开/或解密。谢谢!
最佳答案
一旦对某些内容进行哈希处理,就永远无法恢复原来的内容。
让我们以密码为例,通常当用户使用电子邮件/密码注册时,您将对密码进行哈希处理(使用类似 bcrypt 的方法),然后将哈希存储在您的数据库中。这很好,因为如果攻击者获得了数据库的副本,就无法“解密”哈希。
在您的情况下,您可能不想对电子邮件进行哈希处理,因为这意味着您永远无法向此人发送电子邮件——我假设您会想要这样做。
如果您决定走这条路,您基本上只会为每个用户存储两个密码(这是我能想到的最接近的类比,对不起!)。
希望对您有所帮助!
编辑:更好的方法是创建一个仅提供密码的新帐户,然后自动为该人生成一个用户名。这就是像 privateinternetaccess.com 这样的公司所做的——他们会为你生成一些随机用户名——这样你就无法联系到用户,但他们仍然可以安全地登录到你的应用程序。
关于authentication - bcrypt 哈希电子邮件地址和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26576600/