動かざることバグの如し

殿、温めておいたバグがこちらでございます

Pythonで文字列からMD5ハッシュを生成する

環境

やり方

import hashlibする必要がある

>>> import hashlib
>>> hashlib.md5(b'hello').hexdigest()
'5d41402abc4b2a76b9719d911017c592'

md5()はバイト列を引数として受けるので、渡す際は文字列の前にbをつけなければならない。

つけないと

>>> hashlib.md5('hello').hexdigest()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Unicode-objects must be encoded before hashing

となる

変数を渡す際も同じく

>>> hashlib.md5(message.encode('utf-8')).hexdigest()
'5d41402abc4b2a76b9719d911017c592'

とやって上げる必要がある。このへんはPython3で文字列を処理する際の心掛け - Qiitaあたりが詳しい