XMPP DIGEST-md5计算响应的算法

时间:2016-09-17 02:37:04

标签: xmpp chat md5 ejabberd sasl

我正在读取XMPP身份验证流程中的内容。我知道响应是在客户端上使用类似

的算法计算的
  1. 创建表格"用户名:realm:password"的字符串。将此字符串称为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。
  9. 这嵌入在结构的响应字段中。

    解码质询响应的一个例子是

      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"
    

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

    谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

如果我的回答没有澄清您的疑问请告诉我