0
我不瞭解hashlib的一些東西。我不知道爲什麼我可以解碼常規字節對象,但無法解碼作爲字節對象返回的散列。我不斷收到此錯誤:Python Hashlib&解碼()上的字節對象
的UnicodeDecodeError:在位置1「UTF-8」編解碼器不能解碼字節寫入0xAD:無效的起始字節
這裏是一個的產生這個錯誤我的測試代碼。該錯誤是在第8行(h2 = h.decode('utf-8')
)
import hashlib
pw = '[email protected])r'
salt = 'b7u2qw^T&^#[email protected])hvx7ivRoxr^tDyua'
pwd = pw + salt
h = hashlib.sha512(pwd.encode('utf-8')).digest()
print(h)
h2 = h.decode('utf-8')
print(h2)
如果我不散列它,它工作完全正常......
>>> pw = '[email protected])r'
>>> salt = 'b7u2qw^T&^#[email protected])hvx7ivRoxr^tDyua'
>>> pwd = pw + salt
>>> h = pwd.encode('utf-8')
>>> print(h)
b'[email protected])rb7u2qw^T&^#[email protected])hvx7ivRoxr^tDyua'
>>> h2 = h.decode('utf-8')
>>> print(h2)
[email protected])rb7u2qw^T&^#[email protected])hvx7ivRoxr^tDyua
所以我猜我不理解的東西有關散列,但我不知道我錯過了什麼。
散列是字節串,它們不是文本,你不能解碼它們。也許你真的想使用.hexdigest()如果你想要一個文本形式的哈希? – gps 2012-08-17 05:27:08