Python 入门之 内置模块 -- hashlib模块
2024-10-07 04:08:46
Python 入门之 内置模块 -- hashlib模块
1、hashlib
摘要算法,加密算法
(1)主要用途:
<1> 加密 : md5 sha1 sha256 sha512
md5,加密速度快,安全系数低
sha512 加密速度慢,安全系数高
<2> 校验 : md5 sha1 sha256 sha512值
import hashlib
(2)hashlib的特征以及使用要点:
<1> bytes类型数据 ---> 通过hashlib算法 ---> 固定长度的字符串
<2> 当要加密的内容相同时,得到的密文一定是一样的
<3> 当明文不一样时,密文不一定一样
<4> 转化过程不可逆
(3)md5加密:
<1> 普通加密:
import hashlib
md5 = hashlib.md5() # 初始化
md5.update("alex".encode("utf-8")) # 将明文转换成字节添加到新初始化的md5中
print(md5.hexdigest()) # 进行加密
#现在可以进行简单的破解 -- 撞库
<2> 加盐加密 -- 提高安全性
加固定盐
import hashlib
md5 = hashlib.md5("rimo_dsb".encode("utf-8")) # 初始化
md5.update("alex".encode("utf-8")) # 将明文转换成字节添加到新初始化的md5中
print(md5.hexdigest()) # 进行加密
加动态盐
import hashlib
user = input("username:")
pwd = input("password:")
md5 = hashlib.md5(user.encode("utf-8")) # 初始化
md5.update(pwd.encode("utf-8")) # 将明文转换成字节添加到新初始化的md5中
print(md5.hexdigest()) # 进行加密
中文内容编码不同时密文是不一致的,英文的
import hashlib
sha1 = hashlib.sha1()
sha1.update("日魔就是一个大SB".encode("utf-8"))
print(sha1.hexdigest())
sha1 = hashlib.sha1()
sha1.update("日魔就是一个大SB".encode("gbk"))
print(sha1.hexdigest())
(3)文件的一致性校验:
如何验证我们下载的资源是否有病毒呢?这就需要文件的一致性校验了。在我们下载一个软件时,往往都带有一个MD5或者shax值,当我们下载完成这个应用程序时你要是对比大小根本看不出什么问题,你应该对比他们的md5值,如果两个md5值相同,就证明这个应用程序是安全的,如果你下载的这个文件的MD5值与服务端给你提供的不同,那么就证明你这个应用程序肯定是植入病毒了(文件损坏的几率很低)
例如: 校验Pyhton解释器的Md5值是否相同
import hashlib
def file_check(file_path):
with open(file_path,mode='rb') as f1:
md5= hashlib.md5()
while True:
content = f1.read(1024) # 2049 1025 1
if content:
md5.update(content)
else:
return md5.hexdigest()
print(file_check('python-3.6.6-amd64.exe'))
最新文章
- Windows下搭建Spark+Hadoop开发环境
- Laravel安装方法 (windows)
- Java中的移位运算符
- Effective Java 43 Return empty arrays or collections, not nulls
- 【Todo】OSGi学习
- 【转载】跟我一起云计算(6)——openAPI
- UIImagePickerController拍照与摄像(转)
- 【ASP.NET Web API教程】4.1 ASP.NET Web API中的路由
- Spring事务管理注意小事项
- mpi中的广播
- QLineEdit拾遗:数据的过滤、验证和补全
- C++11のlambd表达式
- 用kattle将数据从SQLserver中导入到vertica中
- github隐藏文件&;删除文件
- VS中属性配置ABC
- HDU 4642 Fliping game (简单博弈)
- 从零开始学习html(十二)CSS布局模型——下
- CameraAPI中的 自定义照相功能
- 转换python脚本为可执行程序的方式
- 近期js
热门文章
- SPP框架的基本使用
- Python3学习笔记(十六):随机数模块random
- 前端性能优化 —— reflow(回流/重排)和repaint(重绘)
- kaliXSSbeef的使用
- LeetCode19----删除链表的倒数第N个节点
- MqttConnectReturnCode枚举值
- leetcode-easy-string- 8 String to Integer (atoi)
- Android中@id与@+id区别和sharedUserId属性详解
- 1.4 Navicat Mybatis 占坑
- Mini-batch 和batch的区别