0

私はPHPで次々と呼び出される次の関数を持っています:

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

Djangopythonでも同じことをしたいと思います。あなたの側からのヒントはありますか?

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ビットサイズ(単一の16進文字)のフォーマット指定子がありません。これは、おおよそphpのpack()が行っていることのようです。したがって、元のチャレンジ文字列を最大2文字のチャンクに分割し、それぞれを16進オクテットとして解釈する必要があります。

于 2011-04-07T06:28:24.357 に答える
0

これは、 how-can-i-unpack-binary-hex-formatted-data-in-pythonに役立つ可能性があります

于 2011-04-07T05:34:16.760 に答える