python之 hashlib模块
作者:互联网
python之 hashlib模块
hash是一类算法,该算法接受传入的内容,经过运算得到一串hash值
hash值的特点
-
只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验
-
不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码
-
只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的
特点II用于密码密文传输与验证;特点I、III用于文件完整性校验
#1、 密文传输与验证 #把一段很长的数据update多次,与一次update这段长数据,得到的结果一样,但是update多次为校验大文件提供了可能。以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。 import hashlib m=hashlib.md5() #m=hashlib.sha256() m.update('hello'.encode('utf-8')) m.update('word'.encode('utf-8')) res=m.hexdigest() #hello world print(res) m1=hashlib.md5() m1.update('hello'.encode('utf-8')) m1.update('word'.encode('utf-8')) res=m1.hexdigest() print(res) #校验文件两种方式 #1.读整个文件 m.update(文件所有的内容) res=m.hexdigest() #2.逐行读入【推荐,不会撑爆内存】 m1.update(文件一行) m1.update(文件一行) res=m1.hexdigest() >>> import hashlib >>> m=hashlib.md5() >>> m.update('hello'.encode('utf-8')) >>> m.update('word'.encode('utf-8')) >>> res=m.hexdigest() >>> print(res) 59284aa85709ddaf3bd246030060f6a2 >>> m1=hashlib.md5() >>> m1.update('hello'.encode('utf-8')) >>> m1.update('word'.encode('utf-8')) >>> res=m1.hexdigest() >>> print(res) 59284aa85709ddaf3bd246030060f6a2
标签:hashlib,utf,python,res,update,m1,模块,hash 来源: https://www.cnblogs.com/weiweirui/p/16379200.html