• 2018-06-11
ウズマスター戦記
ウズマスター戦記 https://www.uzumax.org/2018/06/typeerror-unicode-objects-must-be.html

TypeError: Unicode-objects must be encoded before hashing Pythonでハッシュを作成しようとしてエラーになった

Pythonでハッシュを作成するライブラリとして「hashlib」があるんだけど、
以下の実装にしたら以下のメッセージでエラーになっちまった。


  • TypeError: Unicode-objects must be encoded before hashing


解決したので記録。

エラー発生ソース

import hashlib

str = "Uzumaster"

# 正常 2d626554714ee65448005ee3f6b03da6
print(hashlib.md5(b'Uzumaster').hexdigest())

# エラー
# TypeError: Unicode-objects must be encoded before hashing
print(hashlib.md5(str).hexdigest())

解決ソース

「Unicode-objects must be encoded before hashing」ってことは、ハッシュ化する前にエンコードしろという意味だ。
String型を直接流し込んでいるのがイカンのだな。
「str.encode("UTF-8")」とエンコードしてやればOK。
import hashlib

str = "Uzumaster"

# 正常 2d626554714ee65448005ee3f6b03da6
print(hashlib.md5(b'Uzumaster').hexdigest())

# 解決 2d626554714ee65448005ee3f6b03da6
print(hashlib.md5(str.encode("UTF-8")).hexdigest())

ちょろいもんよ。

0 件のコメント:

コメントを投稿

お気軽にコメント下さい。