hashlib-sha摘要算法模块
摘要:hashlib:
摘要算法的模块
用处:
1、查看某两个文件是否完全一致
"abcdefggg"
"abcdefhhg"
2、加密认证
把密码加密后写入文件
(发生任何变化 都不行)
模块:
1、md5
2、sha sha256 sha512 等等
简单示例:
import hashlib #导入模块
obj = hashlib.md5('字符串') #创建md5类的对象 (加盐:静态和动态)
obj.update(b"对比内容,或 加密内容") #传入数据 bytes 类型 bytes()
a = obj.hexdigest() #对比的结果
print(a) #打印,写入文件 等等操作
校验两个字符串是否一致:
import hashlib
md5_obj1 = hashlib.md5()
md5_obj1.update(b'How are you?') #b"" 转换成bytes 类型
a = md5_obj1.hexdigest() #hexdigest 找摘要算法要结果
print(a)
#04e35eb3e4fcb8b395191053c359ca0e
md5_obj2 = hashlib.md5()
md5_obj2.update(b'How are') #两个字符串不一样
b = md5_obj2.hexdigest()
print(b) #打印摘要算法 的结果
# 699f3620f6b19226ec27865572f7b704
print(a == b) #md5 也不一样
#False #文章校对(是否完全一致),密码校验 等等
一篇文章的校验:
md5_obj.update()
支持多行,校验文件的时候,分别读取2个文件,一行一行读,每一行update一下
对比最终的hexdigest()
import hashlib
md5_obj1 = hashlib.md5()
md5_obj2 = hashlib.md5()
with open('name','r',encoding='utf-8') as f,\
open('文件','r',encoding='utf-8') as f1:
for line in f:
md5_obj1.update(bytes(line,encoding='utf-8'))
for line1 in f1:
md5_obj2.update(bytes(line1,encoding='utf-8')) #update() 累加
a = md5_obj1.hexdigest()
b = md5_obj2.hexdigest()
print(a == b) # 对比最终的 hexdigest()
#True 或 False
或
import hashlib
md5_obj1 = hashlib.md5()
md5_obj2 = hashlib.md5()
with open('name','rb') as f,\ #直接用 "rb" 模式打开 , 不用 encoding='utf-8' 编码
open('文件','rb') as f1:
for line in f:
md5_obj1.update(bytes(line))
for line1 in f1:
md5_obj2.update(bytes(line1))
a = md5_obj1.hexdigest()
b = md5_obj2.hexdigest()
print(a == b)
密码加密:
import hashlib
md5_obj = hashlib.md5()
md5_obj.update(b'') # 密码
a = md5_obj.hexdigest()
print(type(a))
with open('name','w') as f:
# f.write(bytes(a,encoding='utf-8')) #'wb' 模式打开 , 要转成 bytes类型
f.write(a)
如果只是简单的加密,可以暴力破解:撞库
http://www.cmd5.com/ 一个在线md5 破解网站
撞库: 暴力破解密码
加盐: 为客户加字符串(有的客户密码太简单,主动弄复杂)
分为静态加盐和动态加盐
静态加盐:
import hashlib
md5_obj = hashlib.md5('fdfdf@#$'.encode('utf-8')) # 给下面的密码加上一些字符串
md5_obj.update(b'') # 密码
a = md5_obj.hexdigest()
print(a)
e8d298f03f7b6b0ce169ba30729a19e5
动态加盐:
md5_obj = hashlib.md5('用户名 + @#@df +密码'.encode('utf-8'))
sha:
也是个算法
sha 和 hsshlib 一样
sha:
1.sha
2.sha256
3.sha512
4.....
256,512,字节数越多, 运行速度越慢,,安全性更高
小结:
1、摘要的过程不可逆
2、能做的事:
文件的一致性检测
用户的加密认证:
单纯的md5不够安全
静态加盐: 简单的盐可能被破解,且破解之后所有的盐都失效了
动态加盐:动态的
hashlib-sha摘要算法模块的更多相关文章
- day 27 多态 接口 类方法 静态方法 hashlib 摘要算法模块
# 多态的理解:# Python 天生自带多态# 鸭子类型 list 和 tuple 就是一对鸭子类型 很像但是没有继承关系## 而其他的类型 上传参数或者打印参数的时候 必须是指定的数据类型# -- ...
- hashlib(摘要算法的模块)--重要 (一)
课件地址:https://www.cnblogs.com/mys6/p/10584933.html 搜索hashlib模块 # 登录认证# 加密 --> 解密# 摘要算法# 两个字符串 :# ...
- hashlib摘要算法模块,logging日志,configparser配置文件模块
一.hashlib模块(摘要算法模块) 1.算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢? 摘要算法又称哈希算法.散列算法.它通过一个函数,把 ...
- 内置函数 hashlib configparser logging 模块 C/S B/S架构
1.内置函数 # 内置的方法有很多 # 不一定全都在object中 # class Classes: # def __init__(self,name): # self.name = name # s ...
- 模块 -- 序列化 hashlib sha logging (加密 加盐 )
模块: 一个py文件就是一个模块 模块分类: 1:内置模块,登录模块,时间模块,sys模块,os模块等等 2: 扩展模块, 3:自定义模块,自己写的py文件 python 开发效率之高:python ...
- Python模块——HashLib(摘要算法)与base64
摘要算法(hashlib) Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...
- python 加密 hashlib与hmac模块
https://www.jb51.net/article/128911.htm hashlib模块简介: hashlib模块为不同的安全哈希/安全散列(Secure Hash Algorithm)和 ...
- Python基础(11)_python模块之time模块、rando模块、hashlib、os模块
一.模块 1.什么是模块:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀 模块的本质:模块的本质是一个py文件 2.模块分为三类:1)内置模块:2)第三方模块: ...
- hashlib,configparser,logging模块
一.常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度 ...
随机推荐
- canvas画饼图
<style> body { background: black; text-align: center; } #cans { background: white; } ...
- 动态栅格(DEM)图层实现服务端渲染
PS:此处动态图层指,图层文件都放在经过注册的文件目录里,可以通过文件名动态加载图层 动态加载的矢量图层,可以实现客户端和服务端的定制渲染,但栅格一般是不能再渲染的,以下介绍可行的方法 建立一个很简单 ...
- pandas中loc-iloc-ix的使用
转自:https://www.jianshu.com/p/d6a9845a0a34 Pandas中loc,iloc,ix的使用 使用 iloc 从DataFrame中筛选数据 iloc 是基于“位置” ...
- Mac上安装Homebrew和wget
实际上是使用Homebrew来安装wget 安装Homebrew Homebrew一般称为brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常 ...
- Selenium私房菜系列2 -- XPath的使用【ZZ】
在编写Selenium案例时,少不免是要用到XPath的,现在外面关于XPath使用的参考资料很多,下面我直接转一篇关于XPath使用的文档.如果对XPath不熟悉请参考下文,你不需要去百度/Goog ...
- ios水果风暴游戏源码项目下载
这是一款ios水果风暴游戏源码下载,介绍给大家一下,喜欢的朋友可以下载学习一下吧.应用介绍:这是一个以获得高分和挑战更高难度为目的的游戏.游戏中有九种不同的卡通水果,您可以交换屏幕中两个相邻水果的位置 ...
- # Transition:添加弹出过渡效果
# Transition:添加弹出过渡效果 通过鼠标的单击.获得焦点,被点击或对元素任何改变中触发,并平滑地以动画效果改变CSS的属性值. W3C-transition MDN-transition ...
- SEO 第六章
SEO第六章 本次课程目标: 1. 掌握网站的内链优化 2. 网站的URL优化 一. 网站地图 1. 什么是网站地图? 网站地图也叫站点地图,英文名叫sitemap,指的网站所有内 ...
- expand - 把 tab 符转换为空格符
总览 (SYNOPSIS) ../src/expand [OPTION]... [FILE]... 描述 (DESCRIPTION) 把 各文件 FILE 中的 tab 符 转换为 空格符, 然后 写 ...
- 用户交互和if条件判断、嵌套
#a=input("提示语“)#接受的数据类型是字符串str#提示用户输入姓名 # a=input("请输入姓名") print(a) '''输出结果:请输入姓名小明 姓 ...