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

 

posted @ 2019-06-10 10:53  ---江北  阅读(352)  评论(0编辑  收藏  举报
TOP