从php到django for pack(';H32';,$challenge)和md5(";\0";$word.$challenge)

从php到django for pack(';H32';,$challenge)和md5(";\0";$word.$challenge),php,python,django,md5,pack,Php,Python,Django,Md5,Pack,我在PHP中一个接一个地调用了以下函数: $chal = pack('H32',$challenge); $word = md5("\0" . $word . $chal); 我想在Django python中也这样做。 您有什么建议吗?这可能会有所帮助这种方法会产生与原始php相同的结果(至少在x86_64上) Python的struct.pack()方法没有用于4位大小(单十六进制字符)的格式说明符,这似乎与php的pack()大致相同。因此,您必须将原始挑战字符串分解为2个字符的块,并将

我在PHP中一个接一个地调用了以下函数:

$chal = pack('H32',$challenge);
$word = md5("\0" . $word . $chal);
我想在Django python中也这样做。
您有什么建议吗?

这可能会有所帮助

这种方法会产生与原始php相同的结果(至少在x86_64上)


Python的struct.pack()方法没有用于4位大小(单十六进制字符)的格式说明符,这似乎与php的pack()大致相同。因此,您必须将原始挑战字符串分解为2个字符的块,并将每个块解释为十六进制八位字节。

非常感谢!我想知道为什么pack会给我错误的结果,现在我明白了
import hashlib
import struct

cha1 = struct.pack('16B', *[int(c, 16) for c in (challenge[i:i+2]
    for i in xrange(0, len(challenge), 2))])

word = hashlib.md5('\0%s%s' % (word, cha1)).hexdigest()