从php到django for pack('H32',$ challenge)和md5(“\ 0”。$ word。$ challenge)

时间:2011-04-07 04:43:50

标签: php python django md5 pack

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

$chal = pack('H32',$challenge);
$word = md5("\0" . $word . $chal);

我想在Django python中做同样的事情。 请问您的任何提示吗?

2 个答案:

答案 0 :(得分:1)

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

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()

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

答案 1 :(得分:0)