和各種語(yǔ)言一樣"加鹽"亂七八糟的等等,過(guò)一遍就完事了??
MD5
import hashlib
md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?'.encode('utf-8'))
print(md5.hexdigest())
如果數(shù)據(jù)量很大,可以分塊多次調(diào)用update(),最后計(jì)算的結(jié)果是一樣的:
import hashlib
md5 = hashlib.md5()
md5.update('how to use md5 in '.encode('utf-8'))
md5.update('python hashlib?'.encode('utf-8'))
print(md5.hexdigest())
SHA1
import hashlib
sha1 = hashlib.sha1()
sha1.update('how to use sha1 in '.encode('utf-8'))
sha1.update('python hashlib?'.encode('utf-8'))
print(sha1.hexdigest())
hmac
>>> import hmac
>>> message = b'Hello, world!'
>>> key = b'secret'
>>> h = hmac.new(key, message, digestmod='MD5')
>>> # 如果消息很長(zhǎng),可以多次調(diào)用h.update(msg)
>>> h.hexdigest()
'fa4ee7d173f2d97ee79022d1a7355bcf'
hmac輸出的長(zhǎng)度和原始哈希算法的長(zhǎng)度一致。
需要注意傳入的key和message都是bytes類(lèi)型,str類(lèi)型需要首先編碼為bytes