Hash 是否可以根据另一个密码哈希验证密码哈希?

Hash 是否可以根据另一个密码哈希验证密码哈希?,hash,passwords,cryptography,md5,Hash,Passwords,Cryptography,Md5,考虑以下交互作用: 用户将其用户名和密码存储在web服务器上。为了安全起见,服务器记录密码的散列加上一些唯一的salt 当用户使用客户机应用程序时,它向服务器发出请求,提交用户名和密码哈希以及其他一些唯一的salt 因此,您在服务器上有以下信息,需要知道请求是否真实: 服务器的盐 服务器的哈希密码 客户的盐 客户端的哈希密码 再次。。。客户端发送:clientSalt+MD5(clientSalt+密码)。服务器具有serverSalt+MD5(serverSalt+密码)。我不想知道密码,

考虑以下交互作用:

用户将其用户名和密码存储在web服务器上。为了安全起见,服务器记录密码的散列加上一些唯一的salt

当用户使用客户机应用程序时,它向服务器发出请求,提交用户名和密码哈希以及其他一些唯一的salt

因此,您在服务器上有以下信息,需要知道请求是否真实:

  • 服务器的盐
  • 服务器的哈希密码
  • 客户的盐
  • 客户端的哈希密码
再次。。。客户端发送:
clientSalt
+
MD5(clientSalt+密码)
。服务器具有
serverSalt
+
MD5(serverSalt+密码)
。我不想知道密码,我只想知道哈希值是否是根据同一密码计算的

在不知道散列的密码的情况下,有没有办法验证两个散列的密码是否相同


我的目标是在客户机-服务器环境中允许某种形式的安全身份验证,而无需通过网络交换实际密码。这只是我的一个想法,但我甚至不知道这是否可行。

这需要取消对密码的清除,这是不可能的。如果服务器接收到:
salt,md5sum
,则无法查看md5sum中的内容


而质询-响应协议将起作用。服务器应生成一个随机值
nonce
,并将其发送给客户端。客户端计算md5(md5(密码)| nonce))并将其返回给服务器。服务器通过检查需要取消密码清除的md5(storedpassword | nonce)进行验证,这是不可能的。如果服务器接收到:
salt,md5sum
,则无法查看md5sum中的内容

而质询-响应协议将起作用。服务器应生成一个随机值
nonce
,并将其发送给客户端。客户端计算md5(md5(密码)| nonce))并将其返回给服务器。服务器通过检查
md5(storedpassword | nonce)
进行验证

我的目标是在客户机-服务器环境中允许某种形式的安全身份验证,而无需通过网络交换实际密码。这只是我的一个想法,但我甚至不知道这是否可能

为此,我建议研究Kerberos:以及

我的目标是在客户机-服务器环境中允许某种形式的安全身份验证,而无需通过网络交换实际密码。这只是我的一个想法,但我甚至不知道这是否可能

为此,我建议研究Kerberos:and

不,您不能这样做

一旦你在混合物中加入盐,就几乎不可能比较散列。(要做到这一点,需要在比较“未散列”数据之前以某种方式“取消散列”。

不,您不能这样做


一旦你在混合物中加入盐,就几乎不可能比较散列。(这样做需要在比较“未散列”数据之前以某种方式“取消散列”这些散列。)

这是不可能的。如果您没有在服务器上存储密码,则用户必须提供密码


如果您将密码存储在服务器上,用户可以提供使用请求的salt计算的哈希值。

这是不可能的。如果您没有在服务器上存储密码,则用户必须提供密码


如果您将密码存储在服务器上,用户可以提供使用请求的salt计算的哈希值。

您将无法使用此设置验证哈希值。 如果您不希望有人看到密码通过网络传输,SSL是更简单的方法。 如果您不想使用SSL,可以查看SRP。
另外:不要使用MD5+Salt存储密码,请使用诸如bcrypt或scrypt之类的密钥增强功能。

您将无法使用此设置验证哈希。 如果您不希望有人看到密码通过网络传输,SSL是更简单的方法。 如果您不想使用SSL,可以查看SRP。 另外:不要使用MD5+Salt来存储密码,使用诸如bcrypt或scrypt之类的密钥增强功能。

可能是一种方法,可能会使用,这取决于您的权衡。其中一个折衷方案是,控制客户端的攻击者可能会使用泄露的哈希来验证自己

不要发明自己的加密协议。使用知名度高、经过测试的产品。如果可能,请使用现有(经过审查的)实现

可能是一种方法,可能使用,取决于您的权衡。其中一个折衷方案是,控制客户端的攻击者可能会使用泄露的哈希来验证自己


不要发明自己的加密协议。使用知名度高、经过测试的产品。如果可能,请使用现有(经过审查的)实现

你能详细说明一下吗?那是错误的。这意味着用户和服务器都不需要知道真正的密码。。。事实上,md5(password)在这里是一个密码,这使得它的长度固定且更可预测。我不确定您在这里是如何定义“错误”的,但是,是的,标准质询-响应身份验证的一个缺点是客户端和服务器有一个共享的秘密。如果您关心可预测性,那么将其设置为SHA512,对其添加盐,并将盐与挑战一起发送(盐不会增加保密性,只会增加计算复杂性)。可预测性与密码存储无关。。。系统妥协是不可能的。这个问题在这里并没有消失,但这个解决方案至少可以工作,并且不需要像Kerberos那样的第三方。这总是一种折衷。你能详细说明一下吗?那是错误的。这意味着用户和服务器都不需要知道真正的密码。。。事实上,md5(password)在这里是一个密码,而