【问题标题】:XMPP DIGEST-md5 Algorithm to compute the responseXMPP DIGEST-md5 算法来计算响应
【发布时间】:2016-09-17 02:37:03
【问题描述】:

我正在阅读有关 XMPP 身份验证流程的内容。我知道响应是在客户端使用这样的算法计算的

  1. 创建格式为“用户名:领域:密码”的字符串。将此字符串称为 X。
  2. 计算 X 的 16 个八位字节的 MD5 哈希。将结果称为 Y。
  3. 创建格式为“Y:nonce:cnonce:authzid”的字符串。将此字符串称为 A1。
  4. 创建格式为“AUTHENTICATE:digest-uri”的字符串。将此字符串称为 A2。
  5. 计算 A1 的 32 位十六进制数字 MD5 哈希。调用结果 HA1。
  6. 计算 A2 的 32 位十六进制数字 MD5 哈希。调用结果 HA2。
  7. 创建格式为“HA1:nonce:nc:cnonce:qop:HA2”的字符串。将此字符串称为 KD。
  8. 计算 KD 的 32 位十六进制数字 MD5 哈希。调用结果 Z。

这嵌入在结构中的响应字段中。

解码挑战响应的一个例子是

  username="rob",realm="cataclysm.cx",nonce="OA6MG9tEQGm2hh",cnonce="OA6MHXh6VqTrRk",nc=00000001,qop=auth,digesturi="xmpp/cataclysm.cx",response=d388dad90d4bbd760a152321f2143af7,charset=utf-8,authzid="rob@cataclysm.cx/myResource"

但我担心的是,我在任何地方都没有看到该特定响应字段是如何在服务器上使用的?有没有真正使用这个的用例。有人可以引用参考/见解/实现如何使用响应字段以及它实际上如何在确定用户的真实性方面发挥作用。

谢谢!

【问题讨论】:

    标签: xmpp chat md5 ejabberd sasl


    【解决方案1】:

    目前我正在研究 Digest MD5 身份验证机制,我正在使用 RFC 2831 作为参考,并回答您的问题是服务器在服务器站点再次生成该响应,然后将其与从客户端收到的响应字段进行比较,如果他们匹配客户端获得身份验证,否则身份验证失败。

    现在进行这种比较的原因是,一旦对字符串进行哈希处理,它就无法反转为源字符串,因此服务器计算哈希值,如果提供的源字符串相同,这些值将相等

    如果我的回答没有解决您的疑问,请告诉我

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      相关资源
      最近更新 更多