Python3入门(十三)——常用内置模块之摘要模块hashlib/hmac
(1)hashlib
hashlib提供了常见摘要算法:如MD5,SHA1等等
一个md5的加密示例如下:
import hashlib m = hashlib.md5() m.update("hello python".encode("utf-8")) print(m.hexdigest())
更多示例,参考如下:
https://blog.csdn.net/qq_31726841/article/details/82464990
(2)hmac
为了防止黑客通过彩虹表根据哈希值反推原始口令,在计算哈希的时候,不能仅针对原始输入计算,需要增加一个salt来使得相同的输入也能得到不同的哈希,这样,大大增加了黑客破解的难度。 如果salt是我们自己随机生成的,通常我们计算MD5时采用md5(message + salt)。但实际上,把salt看做一个“口令”,加salt的哈希就是:计算一段message的哈希时,根据不通口令计算出不同的哈希。要验证哈希值,必须同时提供正确的口令。 这实际上就是Hmac算法:Keyed-Hashing for Message Authentication。它通过一个标准算法,在计算哈希的过程中,把key混入计算过程中。
示例代码如下:
import hmac key = "se".encode("utf-8") msg = "hello python".encode("utf-8") h = hmac.new(key, msg, digestmod="md5") print(h.hexdigest())