Python「Unicode-objects must be encoded before hashing」

Pythonで文字列をSHA256かけたら怒られた。

怒られ方
str = "abc" hash = hashlib.sha256(str).hexdigest() # TypeError: Unicode-objects must be encoded before hashing

どうやらPythonさんは文字列を代入するときに自動でUnicodeに変換しているらしい。

がしかし、hashlibくんはUnicodeに対応してないとのこと。

解決法

なので事前にUTF-8とかに変換してあげる必要がある。

str = "abc".encode('utf-8') hash = hashlib.sha256(str).hexdigest() # ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

参考