从php到Django for pack('H32',$challenge)和md5(“\0”。$字。$挑战)

2024-06-16 10:58:53 发布

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

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

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

我希望在Django python中也这样做。 你那边有什么建议吗?在


Tags: django函数md5建议packwordchallengephp
2条回答

这种方法产生与原始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的结构包()方法没有4位大小(单个十六进制字符)的格式说明符,这似乎大致就是php的pack()所做的。因此,您必须将原始的质询字符串分成2个字符的块,并将每个块解释为一个十六进制八位字节。在

相关问题 更多 >