散列算法

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())