我正在嘗試爲實踐構建一個md5餅乾。我去任何進一步這裏之前是我的代碼:如何在Python中對字符串進行二進制編碼?
def offline_wordlist_attack(list_path):
with fileinput.input(files=(list_path)) as wordlist:
for word in wordlist:
md5_hash_object = hashlib.md5() # constructing an md5 hash object
md5_hash_object.update(binascii.a2b_uu(word))
word_digest = md5_hash_object.digest() # performing the md5 digestion of the word
print(word_digest) # Debug
我的問題是與md5_hash_object.update(binascii.a2b_uu(word))
。 hashlib Python 3文檔聲明傳遞給update()
的字符串應該在二進制表示中。該文檔使用m.update(b"Nobody inspects")
作爲示例。在我的代碼中,我不能簡單地在變量word
前附加b
。於是,我就用binascii庫,但該庫也有文檔說明在一張紙條:
注
編碼和解碼功能不接受Unicode字符串。只有 bytestring和bytearray對象可以被處理。
有人能幫我解決這個問題嗎?它越來越好了。
注意:在你的情況下''fileinput.input()'可能太慢了。你可以使用'md5(word).digest()',而不用明確的'update()'。 – jfs