我需要用 Python 生成与 PHP 相同的 adler32 哈希值,但是标准实现不同。有什么想法吗?
$ php -r 'print hash("adler32", "bla") . "\n";'
02620130
$ python -c 'import zlib; print zlib.adler32("bla");'
39977264
我使用的是PHP 5.5.9和Python 2.7.6。
目前我已经采取了以下措施:
def php_adler32(string):
phpcode = """print hash("adler32", "%s");""" % string
try:
rv = subprocess.check_output(['php','-r',phpcode], shell=False)
except subprocess.CalledProcessError as e:
raise RuntimeError("Could not compute adler32 through php: %s" % e)
return rv
但我担心这段代码最终会被发布在dailywtf.com上。
"%08d" % int(hex(adler32('bla'))[2:]
。 - Willem