内置模块-hashlib模块

hashlib  摘要模块

 

  • 有多种算法的模块
  • 每一个算法都帮助我们完成同一件事情
  • 给一个字符串进行计算得到一串密文的结果
    • 这个过程不可逆
    • 对于同一个字符串,同一种算法 计算的结果永远是相同的
    • 对于不同的字符串,计算的结果总是不同的
import hashlib
hashlib.md5  # 最通用\最快捷\相对简单
hashlib.sha1 # 已经开始被大家广泛应用
md5_obj = hashlib.md5()
md5_obj.update('zhangsan'.encode('utf-8'))   #pycharm 不会做提示
ret = md5_obj.hexdigest()
print(ret)

加固定的盐

md5_obj = hashlib.md5('任意的字符串'.encode('utf-8'))
md5_obj.update('123456'.encode('utf-8'))
ret = md5_obj.hexdigest()
print(ret)

动态加盐 - 最安全的存储密码的方式

 

username=input(“请输入你的用户名”)
md5_obj = hashlib.md5(username.encode('utf-8')) md5_obj.update(pwd.encode('utf-8')) ret = md5_obj.hexdigest() print(ret)

 

文件一致性校验

import hashlib
with open('file','rb') as f :
    content = f.read()
md5_obj = hashlib.md5()
md5_obj.update(content)
print(md5_obj.hexdigest())

with open('file1','rb') as f :
    content = f.read()
md5_obj = hashlib.md5()
md5_obj.update(content)
print(md5_obj.hexdigest())

 

文件非常大 大到4g的文件,可分开

 

 

import hashlib
md5_obj = hashlib.md5()
md5_obj.update('hello,world'.encode('utf-8'))
print(md5_obj.hexdigest())


md5_obj = hashlib.md5()
md5_obj.update('hello,'.encode('utf-8'))
md5_obj.update('world'.encode('utf-8'))
print(md5_obj.hexdigest())

执行结果:
3cb95cfbe1035bce8c448fcaf80fe7d9
3cb95cfbe1035bce8c448fcaf80fe7d9

 

import hashlib
def md5_file():
    md5_obj = hashlib.md5()
    with open('file','rb') as f :
        for line in f:
            md5_obj.update(line)
    print(md5_obj.hexdigest())

md5_file()

执行结果:
d41d8cd98f00b204e9800998ecf8427e

 

posted @ 2019-02-07 22:59  小萍瓶盖儿  阅读(112)  评论(0编辑  收藏  举报