我正在开发一个Python项目,该项目支持Python 3,并且正在进行开发。具体来说,我正在开发一个摘要MD5算法。
在Python 2.6中,如果不运行以下导入:
from __future__ import unicode_literals
我能够编写如下代码:
a1 = hashlib.md5("%s:%s:%s" % (self.username, self.domain, self.password)).digest()
a1 = "%s:%s:%s" %(a1, challenge["nonce"], cnonce )
没有任何问题,我的身份验证很好用。当我使用导入unicode_literals的相同代码行时,会出现异常:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa8 in position 0: unexpected code byte 由于我对Python相对较新,所以在解决这个问题时有些困惑。如果我将格式化字符串中的%s替换为%r,我就能够连接字符串,但是身份验证无法正常工作。我阅读过的digest-md5规范说,必须将16个八位二进制摘要附加到这些其他字符串后面。
你有什么想法吗?
b
可能有效,但这可能会导致错误的结果。无论如何,这段代码的目的是什么? - Philipp