md5 ハッシュ hashを生成する。

In [201]: import hashlib

In [212]: hashlib.md5(john@example.encode(utf-8)).hexdigest()
Out[212]: 2e7a11032096c21c8e9d9704cef65fb8

.digest()にすると、

In [213]: hashlib.md5(john@example.encode(utf-8)).digest()
Out[213]: b.zx11x03 x96xc2x1cx8ex9dx97x04xcexf6_xb8

.encode()を外すと、

In [214]: hashlib.md5(john@example).hexdigest()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-214-42f9c6eff509> in <module>()
----> 1 hashlib.md5(john@example).hexdigest()

TypeError: Unicode-objects must be encoded before hashing

エラー、
バイト byte指定のbを付けたら、

In [215]: hashlib.md5(b'john@example').hexdigest()
Out[215]: '2e7a11032096c21c8e9d9704cef65fb8'

オッケー。

マニュアル

15.1. hashlib — セキュアハッシュおよびメッセージダイジェスト — Python 3.5.2 ドキュメント