检查使用 bCrypt 加密的密码 .. 我需要通过网络发送密码吗?

Posted

技术标签:

【中文标题】检查使用 bCrypt 加密的密码 .. 我需要通过网络发送密码吗?【英文标题】:Checking a password encrypted with bCrypt .. Do I need to send the password over the wire? 【发布时间】:2013-03-13 01:34:18 【问题描述】:

我目前正在考虑使用 bCrypt 来加密我项目中未来用户的密码。

它看起来非常强大,但这是我的担忧——

在网站上,创建一个帐户。服务器将 bCrypt 您的密码并存储其哈希值。 test --> $2a$12$4PhCN62AmALB7e.Sv2w9w.AP/JZ28l.dZldU5iHyupY2w5wPz9o.u 现在要检查您的密码,您只需检查返回的BCrypt.Net.BCrypt.Verify("test", "$2a$12$4PhCN62AmALB7e.Sv2w9w.AP/JZ28l.dZldU5iHyupY2w5wPz9o.u") 以确保匹配。

如果使用客户端应用程序与此网络服务器和相同的数据一起工作,我是否需要通过网络发送密码以使服务器匹配它的有效性?让客户端请求散列,然后让服务器将其发送给客户端,这样客户端可以进行散列并验证它是否可行?

【问题讨论】:

如何让客户端验证自己的密码? @Blender - 如果网络服务器将它期望的哈希发送给客户端,客户端可以检查输入的密码是否与哈希匹配。我错了吗? 是什么阻止了客户说谎? @Blender - 谢谢 :) 【参考方案1】:

您可以使用 SSL(例如 https)防止明文密码通过网络发送。密码将是明文,但连接是安全的,只有服务器和客户端才能解码该连接中的信息。

【讨论】:

SSH 还是 SSL?有很大的不同! @IDWMaster 不知道有什么区别,只是用法类似 有很大的不同。 SSL 是用于网络浏览器的技术,用于“保护”通信以“防止窃听者”。它使用公私钥密码术,并依靠受信任的根权限来验证站点的身份。另一方面,SSH 用于加密文件传输、保护 GIT 存储库以及远程访问 Linux 终端之间的任何事情。

以上是关于检查使用 bCrypt 加密的密码 .. 我需要通过网络发送密码吗?的主要内容,如果未能解决你的问题,请参考以下文章

带有 BCrypt 哈希的 AES 256。如何从数据库中检查用户密码? [复制]

我需要用 bcrypt 存储盐吗?

使用mongoose和bcrypt实现用户密码加密

使用bcrypt在nodejs中进行密码加密

使用Bcrypt对密码进行加密与解密验证

使用Bcrypt加密InMemoryAuthentication密码