如何从多个密码生成通用哈希?

3
我有一个应用程序,可以根据用户密码生成哈希值,然后我使用该哈希值来加密数据。现在我想将其扩展到以下情况:在足够的数据生成哈希值之前,任意两个用户中的任何一个都需要验证该应用程序。

问题是,我必须生成完全相同的哈希值,无论哪两个用户进行身份验证 - 因为我只使用一个哈希值进行加密。
我的主要目标是使其尽可能安全,因此如果有其他方法可以实现相同的功能,请随时提及。我只需更改需要修改的代码即可。
1个回答

9
生成一个随机密钥,使用从每对密码(password1、password2)、(password1、password3)、(password1、password4)、(password1、password5)、(password2、password3)等派生的密钥进行加密。然后存储这十个加密结果,以便在收到两个任意密码时可以查找正确的加密结果。
或者,可以使用(2,5)秘密共享方案(例如Shamir's),而不是存储所有这些密码对,来分割随机密钥,然后使用从每个密码派生的密钥加密每个5个秘密之一。

“秘密共享”这个术语是我之前所缺失的。Shamir方案似乎非常适合我。谢谢。 - Belrog
所描述的方案对于2-of-5来说简单又有效。显然,它的可扩展性不是很好,但对于这个系统来说是一个好主意。 :) - Nick Johnson
Shamir的方案应该会比运行密码排列得出更合理的解决方案 - 特别是对于扩展来说。当有人决定我们现在需要10个带密码的人时,我不想进行排列。 - Belrog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接