1. 程式人生 > >Python hashlib Unicode-objects must be encoded before hashing

Python hashlib Unicode-objects must be encoded before hashing

Python2中沒有這個問題 python3中 hashlib.md5(data)函式中data 引數的型別應該是bytes hash前必須把資料轉換成bytes型別

Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from hashlib import md5
>>> name = md5("hello")
>>
> print(name.hexdigest()) 5d41402abc4b2a76b9719d911017c592
Python 3.5.2 (default, Nov 23 2017, 16:37:01) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from hashlib import md5
>>> name = md5("hello")
Traceback (most recent call last)
: File "<stdin>", line 1, in <module> TypeError: Unicode-objects must be encoded before hashing >>> name = md5("hello".encode("utf-8")) >>> print(name.hexdigest()) 5d41402abc4b2a76b9719d911017c592