title: How to correct TypeError: Unicode-objects must be encoded before hashing?
body: <p>I have this error:</p>
  
  <pre><code>Traceback (most recent call last):
    File "python_md5_cracker.py", line 27, in &lt;module&gt;
    m.update(line)
  TypeError: Unicode-objects must be encoded before hashing
  </code></pre>
  
  <p>when I try to execute this code in <strong>Python 3.2.2</strong>:</p>
  
  <pre><code>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()
  </code></pre>