python之路----hashlib模块
在平时生活中,有很多情况下,你在不知不觉中,就用到了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模块的更多相关文章
- python之路:模块初识
python王者开发之路:模块初识 模块初识我现在讲的确有点早.不过没关系,后面我会详细说模块. 模块,也就是库,是python三剑客之一.这三剑客,函数.库和类,都是由程序编写而成的.之所以我先说模 ...
- Python正则表达式与hashlib模块
菜鸟学python第十六天 1.re模块(正则表达式) 什么是正则表达式 正则表达式是一个由特殊字符组成的序列,他能帮助对字符串的某种对应模式进行查找. 在python中,re 模块使其拥有全部的正则 ...
- python之路——常用模块
阅读目录 认识模块 什么是模块 模块的导入和使用 常用模块一 collections模块 时间模块 random模块 os模块 sys模块 序列化模块 re模块 常用模块二 hashlib模块 con ...
- 2018.8.20 Python之路---常用模块
一.re模块 查找: re.findall(‘正则表达式’,‘字符串’) 匹配所有符合正则表达式的内容,形成一个列表,每一项都是列表中的一个元素. ret = re.findall('\d+','sj ...
- Python进阶-XVV hashlib模块、configparse模块、logging模块
1.配置相关的configparse模块 配置文件如何组织?python中常见的是将配置文件写成py,然后引入该模块即可.优点是方便访问. 但是也有用类似windows中的ini文件的配置文件,了解即 ...
- Python之路-numpy模块
这里是首先需要安装好Anaconda Anaconda的安装参考Python之路-初识python及环境搭建并测试 配置好环境之后开始使用Jupyter Notebook 1.打开cmd,输入 jup ...
- python学习-59 hashlib模块
hashlib模块 用于加密相关的操作,3.x里代替了md5模块和sha模块 加密功能 import hashlib obj = hashlib.md5() # 如果在md5里加上自己设置的参数,别的 ...
- 小白的Python之路 day1 模块初识
模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的学2个简单的. ...
- 小白的Python之路 day5 模块XML特点和用法
模块XML的特点和用法 一.简介 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今 ...
随机推荐
- OSI互联数据包封装与解封装过程
当我们在七层协议最上层,主机A想和其它主机通信, 比如telnet到主机B,各层都为数据打包后再封装上自己能识别的数据标签,现在我们只说四层以下的通信过程. .当一个高层的数据包到达传输层,由于tel ...
- HDU 5512 - Pagodas - [gcd解决博弈]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5512 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- POJ 1273 - Drainage Ditches - [最大流模板题] - [EK算法模板][Dinic算法模板 - 邻接表型]
题目链接:http://poj.org/problem?id=1273 Time Limit: 1000MS Memory Limit: 10000K Description Every time i ...
- Linux计划任务Crontab学习笔记
1 http://www.jb51.net/LINUXjishu/345698.html 2 http://www.jb51.net/LINUXjishu/345705.html 3 http: ...
- Django ORM之QuerySet
Django ORM用到三个类:Manager.QuerySet.Model.Manager定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己 ...
- PULL解析学习
学习过程 安卓中有三种对XML解析的方式,这个众所周知,DOM,SAX,PULL 其中被推荐的方法是PULL,说是非常简单,但从一开始接触就觉得比较迷惑,总是云里雾里的感觉,甚至在自己写出了一个能 ...
- Javascript修正this的引用
1.使用this作为参数来传递给函数.因为this始终与当前对象一致. <!DOCTYPE html> <html> <head> <meta charset ...
- java-JProfiler(四)-HelloWorld示例
1.程序代码 package jProfiler; public class Test extends Thread{ public static void main(String[] args) t ...
- bootstrap modal插件弹出窗口如何限制最大高度,并且在内容过多时可以滚动显示
.modal-body{ max-height:400px; overflow-y:auto; } 只有在modal-body类上限制高度才能起作用,其他地方的限制均不起作用
- [js]js中原型的继承
js继承01 思路: 单例/工厂/构造函数--演进到原型 搞清原型结构 原型继承 模拟系统原型继承 实现自己的继承 观察原型继承特点 演进到原型链这一步 //单例模式: 防止变量名冲突: // 思路: ...