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
参考