0

我在 PHP 中依次调用了以下函数:

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

我想在 Django python 中做同样的事情。请问您有什么建议吗?

4

2 回答 2

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 个字符的块,并将每个块解释为十六进制八位字节。

于 2011-04-07T06:28:24.357 回答
0

这可能会有所帮助how-can-i-unpack-binary-hex-formatted-data-in-python

于 2011-04-07T05:34:16.760 回答