为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不将未加密的密码发送到服务器的情况下验证密码

如何在不将未加密的密码发送到服务器的情况下验证密码

慕姐4208626 2023-05-10 14:18:05
我想构建一个登录应用程序,它有一个用于输入用户名和密码的客户端,以及一个服务器,然后接收用户名和密码。然后服务器应该检查它收到的密码是否与已经存储的哈希匹配。我认为不将未加密的密码(仅以字符串形式)从客户端发送到服务器是明智的,因此我已经在客户端使用 BCrypt 对其进行了加密。但是现在我在服务器端有两个哈希,但是 BCrypt 只提供了将明文与哈希进行比较的方法,而不是将哈希与哈希进行比较的方法。我现在应该以明文形式将密码发送到服务器还是有办法比较两个哈希值?感谢您的帮助
查看完整描述

3 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

最简单的方法是使用 TLS 


查看完整回答
反对 回复 2023-05-10
?
Helenr

TA贡献1780条经验 获得超3个赞

“挑战-响应”是您应该在谷歌上搜索的术语。

原则:

在服务器端,您存储了一个散列(加盐)密码和盐。

客户端首先发送登录名。

服务器在数据库中查找登录的盐并将其与随机字符串一起发送给客户端(这就是挑战)。

客户端现在必须按以下方式计算加密密码:将登录密码与盐连接起来并对其进行哈希处理。将结果与挑战中的随机字符串连接起来并对其进行哈希处理。将结果发送到服务器。

服务器现在将散列密码(存储在用户数据库中)与随挑战一起发送的随机字符串连接起来,并计算散列值。结果必须与从客户端收到的结果完全相同。


查看完整回答
反对 回复 2023-05-10
?
四季花海

TA贡献1811条经验 获得超5个赞

您可以从数据库中获取哈希值并将其与发送的值进行比较



查看完整回答
反对 回复 2023-05-10
  • 3 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信