想象一个场景,客户端应用程序正在向后端服务器发送密码,以便服务器可以在与存储的密码变体进行比较时验证用户输入的密码是否正确。
传输机制是HTTPS
服务器向用户代理提供HSTS
&HPKP
和强加密密码,服务器在 SSL 实验室测试中得分为 A+。尽管如此,我们可能希望避免将原始用户提供的密码从用户代理发送到服务器。相反,也许我们会在客户端上经过多轮 SHA-256 之后发送一个哈希值。
在服务器端,为了存储密码,我们使用 bcrypt 进行大量轮次。
从密码学的角度来看,与直接在纯文本密码上相比,对已经 sha-256 散列值执行 bcrypt 有什么缺点吗?使用散列时输入文本的固定长度性质是否会以某种方式破坏算法的优势。
编辑:我不是在询问性能,例如计算、存储、发送或比较值所需的内存、CPU、存储要求或挂钟时间。我完全感兴趣的是在应用 bcrypt 之前应用哈希是否会在披露存储值的完整列表的情况下削弱 bcrypt 的强度。