security - 如何从多个密码生成公共(public)哈希?

标签 security authentication encryption cryptography passwords

我有一个应用程序可以生成用户密码的哈希值,然后我用它来加密数据。我想将此扩展到五分之二的用户需要在应用程序有足够的数据来生成该哈希之前对其进行身份验证的情况。

我遇到的问题是,无论 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/

相关文章:

C# 保护应用程序免受代码注入(inject)

security - 有没有办法在经典 ASP 中使用 BCrypt 来哈希密码?

java - 创建用户帐户时记录和记录暴力攻击的正确方法

linux - 使用 root 权限安装 node.js 有缺点吗?

amazon-web-services - 登录成功后 MediaWiki 不会重定向到页面

javascript - 如何在 Meteor 中使 Google 身份验证仅可用选项

svn - git svn : password for svn is not stored

encryption - 在内存和存储受限的系统上加密和/或解密大文件 (AES),使用 "catastrophe recovery"

java - AES128 解密 :javax. crypto.badpaddingexception pad block 已损坏

java - 在 Java 中,如何使用 JKS keystore 中的 X509 证书(公钥/私钥对)中的私钥进行解密?