python之hashlib模块
Posted 桥前石头
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之hashlib模块相关的知识,希望对你有一定的参考价值。
算法(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。可以说,算法就是计算机解题的过程。
算法具有五个重要特征:
1.有穷性:步骤有限
2.明确性:算法每一步必须有明确的意义
3.输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是算法本身定的初始条件
4.输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。
5.可行性:算法原则上是可以精确运行的
hash是一种算法,算法就像是一座工厂,接受传入的内容(输入),经过加工处理(运算)得到加工处理后的产品(一串hasn值)。
hash算法的特点:
1.只要传入的内容一样,经过运算后的得到 的hash值必然是 一样的;=====》完整性验证
2.hash值是不能反解的;=======》把密码做成hash值,不以明文的形式传输/存储
3.只要hash算法不变,无论明文的内容有多大多小,hash值的长度是一样的。===》不影响网络传输
import hashlib #常规用法一 # m=hashlib.md5(‘helloworld‘.encode(‘utf-8‘)) # print(m.hexdigest()) #fc5e038d38a57032085441e7fe7010b0 #常规用法二 # m=hashlib.md5() # m.update(‘hello‘.encode(‘utf-8‘)) # m.update(‘world‘.encode(‘utf-8‘)) # print(m.hexdigest()) #fc5e038d38a57032085441e7fe7010b0 # m=hashlib.md5() # m.update(‘helloworld‘.encode(‘utf-8‘)) # print(m.hexdigest()) #fc5e038d38a57032085441e7fe7010b0 # m=hashlib.md5() # m.update(‘hello world‘.encode(‘utf-8‘)) # print(m.hexdigest()) #5eb63bbbe01eeed093cb22bb8f5acdc3 ‘‘‘ 从以上的练习中可以看出,同样的内容得到的hash值是一样的, 稍微有点改动,甚至加一个空格都会得到不同的hash结果 ‘‘‘
加盐
import hashlib m=hashlib.md5() m.update(‘天王盖地虎‘.encode(‘utf-8‘)) m.update(‘密码。。。‘.encode(‘utf-8‘)) m.update(‘小鸡炖蘑菇‘.encode(‘utf-8‘)) print(m.hexdigest()) #6e7122afda007b679dfb7759f9122783
hmac模块
import hmac h=hmac.new(‘天王盖地虎‘.encode(‘utf-8‘)) h.update(‘密码。。。‘.encode(‘utf-8‘)) print(h.hexdigest()) #e76a9abfcec64c6594384c14dbbd8f82
以上是关于python之hashlib模块的主要内容,如果未能解决你的问题,请参考以下文章