hashlib模块

 hashlib模块

hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值

hash值的特点是:

1 、只要传入的内容一样,得到的hash值必然一样(用于明文传输密码、文件完整性校验) 

2 、不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码 

3 、只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的

import hashlib
m=hashlib.md5()

m.update('hello'.encode('utf-8'))
m.update('world'.encode('utf-8'))
m.update('egon'.encode('utf-8'))
print(m.hexdigest()) #3801fab9b8c8d9fcb481017969843ed5
import hashlib
m=hashlib.md5()

m.update('h'.encode('utf-8'))
m.update('e'.encode('utf-8'))
m.update('lloworld'.encode('utf-8'))
m.update('egon'.encode('utf-8'))
print(m.hexdigest()) #3801fab9b8c8d9fcb481017969843ed5

注意:m.update()无论是多次传值还是一次传值,得到的hash值相同

import hashlib
m=hashlib.md5()
with open(r'C:\Users\Desktop\上节课复习','rb') as f:
   for line in f:
       m.update(line)
   hv=m.hexdigest()
print(hv) #98416536bdf1f0dc0776629f501ae469

密码加盐

import hashlib
m=hashlib.md5()

pwd='alex3714'
m.update('天王盖地虎'.encode('utf-8'))
m.update(pwd.encode('utf-8'))
m.update('小鸡炖蘑菇'.encode('utf-8'))

print(m.hexdigest()) #ab44c43ea02e8c1083346ca707a6f572

hashlib.sha256(),hashlib.sha512()

import hashlib

m=hashlib.md5()
m.update('helloworld'.encode('utf-8'))
print(m.hexdigest()) #fc5e038d38a57032085441e7fe7010b0

m=hashlib.sha256()
m.update('helloworld'.encode('utf-8'))
print(m.hexdigest()) #936a185caaa266bb9cbe981e9e05cb78cd732b0b3280eb944412bb6f8f8f07af

m=hashlib.sha512()
m.update('helloworld'.encode('utf-8'))
print(m.hexdigest()) #1594244d52f2d8c12b142bb61f47bc2eaf503d6d9ca8480cae9fcf112f66e4967dc5e8fa98285e36db8af1b8ffa8b84cb15e0fbcf836c3deb803c13f37659a60

hmac 模块 ,它内部对我们创建 key 和 内容 进行进一步的处理然后再加密

import hmac
m=hmac.new('天王盖地虎,小鸡炖模块'.encode('utf-8'))
m.update('alex3814'.encode('utf-8'))
print(m.hexdigest())
posted @ 2019-06-28 14:12  wxl106  阅读(130)  评论(0编辑  收藏  举报