How to correct TypeError: Unicode-objects must be encoded before hashing?

1.8K    Asked by CharlesParr in Python , Asked on Jun 8, 2021

 I have this error:

Traceback (most recent call last): 
File "python_md5_cracker.py", line 27, in m.update(line) 
TypeError: Unicode-objects must be encoded before hashing

when I try to execute this code in Python 3.2.2:

import hashlib, sys 
m = hashlib.md5() 
hash = "" 
hash_file = input("What is the file name in which the hash resides? ") 
wordlist = input("What is your wordlist? (Enter the file name) ") 
try: 
hashdocument = open(hash_file, "r") 
except IOError:
print("Invalid file.") 
raw_input() 
sys.exit() 
else: 
hash = hashdocument.readline() 
hash = hash.replace("n", "") 
try: 
wordlistfile = open(wordlist, "r") 
except IOError: 
print("Invalid file.") 
raw_input() 
sys.exit() 
else: 
pass for line in wordlistfile: 
# Flush the buffer (this caused a massive problem when 
placed 
# at the beginning of the script, because the buffer kept
 getting 
# overwritten, thus comparing incorrect hashes) 
m = hashlib.md5() 
line = line.replace("n", "") 
m.update(line) 
word_hash = m.hexdigest() 
if word_hash == hash: 
print("Collision! The word corresponding to the given
hash is", line) 
input() 
sys.exit() 
print("The hash given does not correspond to any supplied word in the wordlist.") 
input() 
sys.exit()

Answered by Celina Lagunas

On getting message “unicode objects must be encoded before hashing”, you can use the below-mentioned piece of code to get rid of the error:-

wordlistfile = open(wordlist,"r",encoding='utf-8')
Or, if you're working on a line-by-line basis: line.encode('utf-8')

Your Answer

Interviews

Parent Categories