详解Python3之数据指纹MD5校验与对比


Posted in Python onJune 11, 2019

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。

概述

MD5校验码通过散列函数计算而成,可以生成任何数据的数据“指纹”,即我们可以利用MD5将消息或者数据压缩成摘要,是的数据量变小,便于比较验证数据的完整和正确性。因为两个不同的文件几乎不可能拥有相同的MD5哈希值,任何对一个文件的非恶意变更都会导致其MD5哈希值改变。所以MD5哈希常用语检查文件完整性,尤其是检测文件传输、磁盘错误或其他情况文件的正确性。

MD5

在Python中我们利用内置模块hashlib即可完成MD5的实现和使用。

import hashlib

m = hashlib.md5()
# 假设文件内容
src = 'I like Python'
m.update(src.encode('utf-8'))
print(m.hexdigest())

示例结果:

17008b7417701b0c233b999d20c13f1d

文件验证

假设现有有两个文件,我们需要验证这两个文件是否一样

import hashlib


def out_md5(src):
  # 简单封装
  m = hashlib.md5()
  m.update(src.encode('utf-8'))
  return m.hexdigest()


with open('1.txt', 'r') as f:
  src = f.read()
  m1 = out_md5(src)
  print(m1)

with open('2.txt', 'r') as f:
  src = f.read()
  m2 = out_md5(src)
  print(m2)

if m1 == m2:
  print(True)
else:
  print(False)

示例结果:

bb0c1b519a0a2b8e6c74703e44538c60
43cb091db43a710d85ce45fb202438cd
False

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
Python的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
Python 操作MySQL详解及实例
Apr 30 Python
Python 处理数据的实例详解
Aug 10 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
Dec 15 Python
python sys.argv[]用法实例详解
May 25 Python
python3解析库BeautifulSoup4的安装配置与基本用法
Jun 26 Python
详解pandas删除缺失数据(pd.dropna()方法)
Jun 25 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
python计算无向图节点度的实例代码
Nov 22 Python
Django-rest-framework中过滤器的定制实例
Apr 01 Python
Python自动抢红包教程详解
Jun 11 #Python
python解压TAR文件至指定文件夹的实例
Jun 10 #Python
python pyinstaller 加载ui路径方法
Jun 10 #Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 #Python
python处理“
Jun 10 #Python
python-pyinstaller、打包后获取路径的实例
Jun 10 #Python
详解Python 切片语法
Jun 10 #Python
You might like
php常用Output和ptions/Info函数集介绍
2013/06/19 PHP
php foreach正序倒序输出示例代码
2014/07/01 PHP
PHP通过API获取手机号码归属地
2015/05/28 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
js Date概念详细介绍
2013/11/22 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
js打造数组转json函数
2015/01/14 Javascript
JS实现让访问者自助选择网页文字颜色的方法
2015/02/24 Javascript
简单实现兼容各大浏览器的js复制内容到剪切板
2015/09/09 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
微信小程序 支付功能(前端)的实现
2017/05/24 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
koa中间件核心(koa-compose)源码解读分析
2020/06/15 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
Vue 使用iframe引用html页面实现vue和html页面方法的调用操作
2020/11/16 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2018/02/18 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
采购文员岗位职责
2013/11/20 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
Python超详细分步解析随机漫步
2022/03/17 Python