Python DIGEST-MD5 SASL 失败

2024-05-17 01:27:29 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中实现Digest-MD5。为了了解它是如何工作的,所以我想出了一些快速的代码来看看。它似乎有效,似乎与RFC一致,但我总是收到“失败”消息。这是我的代码:

    nonce = [FROM REQUEST]
    username = ***
    password = ***
    server = chat.facebook.com
    cnonce = "X8fwG1eWR+EHEVEB44t5qThEpCn/3KqcftmvSyWS3sN="
    nc = 000000001

    x = "%s:%s:%s" % (self.username, self.server, self.password)

    md5sum = md5.new()

    md5sum.update(x)

    y = (md5sum.digest()).encode('hex')

    a = "%s:%s:%s:" % (y, nonce, cnonce)

    a2 = "AUTHENTICATE:xmpp/%s" % self.server

    md5sum = md5.new()
    md5sum.update(a)
    ha1 = (md5sum.digest()).encode('hex')

    md5sum = md5.new()
    md5sum.update(a2)
    ha2 = (md5sum.digest()).encode('hex')

    kd = "%s:%s:%s:%s:auth:%s" % (ha1, nonce, nc cnonce, ha2)

    md5sum = md5.new()
    md5sum.update(kd)
    z = (md5sum.digest()).encode('hex')

    buffer = "username=\"%s\",realm=\"%s\",nonce=\"%s\",cnonce=\"%s\",nc=%s,qop=auth,digest-uri=\"xmpp/%s\",response=%s,charset=utf-8" % (username, server, nonce, cnonce, nc, server, z)

    send_data = base64.b64encode(buffer)

以下是交易的大致情况:

^{pr2}$

有什么想法吗?在


Tags: 代码selfnewserverusernameupdatepasswordmd5