散列算法
Python的hashlib
提供了常见的散列算法,如MD5、SHA1等。以下示例以MD5算法演示了hashlib
的使用。
import hashlib
md5 = hashlib.md5()
md5.update('hello'.encode('utf-8'))
md5.update('world'.encode('utf-8'))
print(md5.hexdigest())
对于较短的文本,使用一次update()
即可,对于较长的内容,则可以分块进行计算。
由于基本的散列算法可以根据彩虹表反推原始内容,所以一般在使用散列算法时都会加盐(salt)。例如md5.update(message + salt)
。这样就必须要提供盐值才能完成验证,这就形成了Hmac算法。
Hmac通过标准算法将盐值混入计算过程,可以使得散列后的内容更加安全。Python提供了hmac
模块来支持Hmac算法,具体使用可参考以下示例。
import hmac
message = b'Hello world'
key = b'secret'
h = hmac.new(key, message, digestmod='MD5')
print(h.hexdigest())