我有以下函數在PHP稱爲一個接一個:
$chal = pack('H32',$challenge);
$word = md5("\0" . $word . $chal);
我想在Django python中做同樣的事情。 請從你身邊獲取任何提示?
我有以下函數在PHP稱爲一個接一個:
$chal = pack('H32',$challenge);
$word = md5("\0" . $word . $chal);
我想在Django python中做同樣的事情。 請從你身邊獲取任何提示?
這種方法產生相同的結果與原來的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的包格式說明()在做什麼。所以你必須把原來的挑戰字符串分解成2個字符塊,並將每個字符串解釋爲一個十六進制八位字節。
非常有趣的話題!坦克指出這一個 – vsidou 2011-04-07 10:53:23
非常感謝!我想知道爲什麼包會給我錯誤的結果,現在我明白了 – vsidou 2011-04-07 10:00:09