我有一个应用程序可以生成用户密码的哈希值,然后我用它来加密数据。我想将此扩展到五分之二的用户需要在应用程序有足够的数据来生成该哈希之前对其进行身份验证的情况。
我遇到的问题是,无论 5 个用户中的哪两个进行身份验证,我都需要生成完全相同的哈希 - 因为我只使用一个哈希进行加密。
我的主要目标是让它尽可能安全,所以如果有其他方法可以做同样的事情,请随时提及这些。我会在需要的地方更改代码。
最佳答案
生成一个随 secret 钥,用从每一对(password1,password2),(password1,password3),(password1,password4),(password1,password5),(password2,password3)等派生的 key 加密它。然后存储这十个加密中的每一个,这样当您收到两个任意密码时,您可以查找正确的一个。
或者,不是存储所有这些对,而是使用 (2,5)- secret 共享方案 (f.x. Shamir's ) 拆分随 secret 钥,然后存储使用从每个 key 派生的 key 加密的 5 个 secret 中的每一个的密码。
关于security - 如何从多个密码生成公共(public)哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1231955/