Python 入门之 内置模块 -- hashlib模块
程序员文章站
2023-01-30 11:43:05
Python 入门之 内置模块 -- hashlib模块
摘要算法,加密算法
文件的一致性校验
hashlib的特征以及使用要点 ......
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'))
上一篇: 两个小伙子没啥不好意思的
下一篇: 自尊心会害死自己吗
推荐阅读
-
Python3内置模块pprint让打印比print更美观详解
-
Python学习之asyncore模块用法实例教程
-
Python3.5 Pandas模块之DataFrame用法实例分析
-
Python3.5基础之NumPy模块的使用图文与实例详解
-
Python 入门之 内置模块 -- datetime模块
-
python 之 数据库(多表查询之连接查询、子查询、pymysql模块的使用)
-
Python 入门之 内置模块 -- time模块
-
Python3.5 Pandas模块之Series用法实例分析
-
详解python中的hashlib模块的使用
-
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法