在平时生活中,有很多情况下,你在不知不觉中,就用到了hashlib模块,比如:注册和登录认证
注册和登录认真过程,就是把注册用的账户密码进行:加密 --> 解密 的过程,在加密、解密过程中,用的了摘要算法
摘要算法
两个字符串 :
import hashlib   # 提供摘要算法的模块
md5 = hashlib.md5()
md5.update(b'')
print(md5.hexdigest())
aee949757a2e698417463d47acac93df
不管算法多么不同,摘要的功能始终不变
对于相同的字符串使用同一个算法进行摘要,得到的值总是不变的
使用不同算法对相同的字符串进行摘要,得到的值应该不同
不管使用什么算法,hashlib的方式永远不变
import hashlib   # 提供摘要算法的模块
sha = hashlib.md5()
sha.update(b'alex3714')
print(sha.hexdigest())
sha 算法 随着 算法复杂程度的增加 我摘要的时间成本空间成本都会增加

摘要算法的用处:
(1)密码的密文存储
(2)文件的一致性验证:
   1.在下载的时候 检查我们下载的文件和远程服务器上的文件是否一致
   2. 两台机器上的两个文件 你想检查这两个文件是否相等
用户的注册与登录
用户注册
用户 输入用户名
用户输入 密码
明文的密码进行摘要 拿到一个密文的密码
写入文件
import hashlib
usr = input('username :')
pwd = input('password : ')
with open('userinfo') as f:
for line in f:
user,passwd,role = line.split('|')
md5 = hashlib.md5()
md5.update(bytes(pwd,encoding='utf-8'))
md5_pwd = md5.hexdigest()
if usr == user and md5_pwd == passwd:
print('登录成功')

用户的登录

撞库
   撞库是黑客通过收集互联网已泄露的用户和密码信息,生成对应的字典表,尝试批量登陆其他网站后,得到一系列可以登录的用户。
很多用户在不同网站使用的是相同的帐号密码,因此黑客可以通过获取用户在A网站的账户从而尝试登录B网址,这就可以理解为撞库攻击。

防止撞库的方式
1.加盐
import hashlib   # 提供摘要算法的模块
md5 = hashlib.md5(bytes('盐',encoding='utf-8'))
# md5 = hashlib.md5()
md5.update(b'')
print(md5.hexdigest())
2.动态加盐
用户名 密码
使用用户名的一部分或者 直接使用整个用户名作为盐
import hashlib # 提供摘要算法的模块
md5 = hashlib.md5(bytes('盐',encoding='utf-8')+b'')
# md5 = hashlib.md5()
md5.update(b'')
print(md5.hexdigest()) import hashilib
做摘要计算的 把字节类型的内容进行摘要处理
md5 sha
md5 正常的md5算法 加盐的 动态加盐
文件的一致性校验
文件的一致性校验这里不需要加盐
import hashlib
md5 = hashlib.md5()
md5.update(b'alex')
md5.update(b'')
print(md5.hexdigest())
对于一个字符串,将其拆分进行加密运算,与整体进行加密运算结果相同

练习: 对一个文件进行摘要算法,最后计算出这个文件的md5值。

python之路----hashlib模块的更多相关文章

  1. python之路:模块初识

    python王者开发之路:模块初识 模块初识我现在讲的确有点早.不过没关系,后面我会详细说模块. 模块,也就是库,是python三剑客之一.这三剑客,函数.库和类,都是由程序编写而成的.之所以我先说模 ...

  2. Python正则表达式与hashlib模块

    菜鸟学python第十六天 1.re模块(正则表达式) 什么是正则表达式 正则表达式是一个由特殊字符组成的序列,他能帮助对字符串的某种对应模式进行查找. 在python中,re 模块使其拥有全部的正则 ...

  3. python之路——常用模块

    阅读目录 认识模块 什么是模块 模块的导入和使用 常用模块一 collections模块 时间模块 random模块 os模块 sys模块 序列化模块 re模块 常用模块二 hashlib模块 con ...

  4. 2018.8.20 Python之路---常用模块

    一.re模块 查找: re.findall(‘正则表达式’,‘字符串’) 匹配所有符合正则表达式的内容,形成一个列表,每一项都是列表中的一个元素. ret = re.findall('\d+','sj ...

  5. Python进阶-XVV hashlib模块、configparse模块、logging模块

    1.配置相关的configparse模块 配置文件如何组织?python中常见的是将配置文件写成py,然后引入该模块即可.优点是方便访问. 但是也有用类似windows中的ini文件的配置文件,了解即 ...

  6. Python之路-numpy模块

    这里是首先需要安装好Anaconda Anaconda的安装参考Python之路-初识python及环境搭建并测试 配置好环境之后开始使用Jupyter Notebook 1.打开cmd,输入 jup ...

  7. python学习-59 hashlib模块

    hashlib模块 用于加密相关的操作,3.x里代替了md5模块和sha模块 加密功能 import hashlib obj = hashlib.md5() # 如果在md5里加上自己设置的参数,别的 ...

  8. 小白的Python之路 day1 模块初识

    模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的. ...

  9. 小白的Python之路 day5 模块XML特点和用法

    模块XML的特点和用法 一.简介 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今 ...

随机推荐

  1. powerdesigner唯一约束设置

    双击unique_pos_code

  2. Asp.net MVC]Asp.net MVC5系列——实现编辑、删除与明细信息视图

    目录 概述 实现信息的明细视图 实现信息的编辑视图 实现信息的删除视图 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net ...

  3. CSU 1804 - 有向无环图 - [(类似于)树形DP]

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1804 Bobo 有一个 n 个点,m 条边的有向无环图(即对于任意点 v,不存在从点 ...

  4. UVA 11168 - Airport - [凸包基础题]

    题目链接:https://cn.vjudge.net/problem/UVA-11168 题意: 给出平面上的n个点,求一条直线,使得所有的点在该直线的同一侧(可以在该直线上),并且所有点到该直线的距 ...

  5. POJ 3254 - Corn Fields - [状压DP水题]

    题目链接:http://poj.org/problem?id=3254 Time Limit: 2000MS Memory Limit: 65536K Description Farmer John ...

  6. ECNU 3247 - 铁路修复计划

    Time limit per test: 2.0 seconds Time limit all tests: 15.0 seconds Memory limit: 256 megabytes 在 A ...

  7. linux:正则表达式grep命令

    基本语法一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串. 一.选择:| |   竖直分隔符表示选择,例如"boy|girl"可 ...

  8. 【代码备份】ZJ10086测试环境成功代码备份

    vuser_init(){        lr_start_transaction("login"); web_url("101.132.17.138",   ...

  9. 查询mysql事务隔离级别

    查询mysql事务隔离级别 查询mysql事务隔离级别 分类: DB2011-11-26 13:12 2517人阅读 评论(0) 收藏 举报 mysqlsessionjava   1.查看当前会话隔离 ...

  10. Jedis 对 Redis 的操作详解

    1. JedisUtil2. 键操作3. 字符串操作4. 字节串4. 整数和浮点数5. 列表6. 集合(Set)7. 散列8. 排序sort 本篇主要阐述Jedis对redis的五大类型的操作:字符串 ...