详解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 相关文章推荐
Python模拟百度登录实例详解
Jan 20 Python
Django 跨域请求处理的示例代码
May 02 Python
Python内存读写操作示例
Jul 18 Python
python实现括号匹配的思路详解
Aug 23 Python
python批量下载抖音视频
Jun 17 Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 Python
基于python实现雪花算法过程详解
Nov 16 Python
python实现逆滤波与维纳滤波示例
Feb 26 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
May 13 Python
python线程里哪种模块比较适合
Aug 02 Python
Python 利用OpenCV给照片换底色的示例代码
Aug 03 Python
Python内置数据类型中的集合详解
Mar 18 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
解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题
2019/10/15 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
2014/08/08 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
js函数内变量的作用域分析
2015/01/12 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
JavaScript中Function详解
2015/02/27 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
值得分享的轻量级Bootstrap Table表格插件
2016/05/30 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
jQuery实现选中行变色效果(实例讲解)
2017/07/06 jQuery
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
Linux下多个Python版本安装教程
2018/08/15 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
PyQt5实现QLineEdit添加clicked信号的方法
2019/06/25 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
2019/12/13 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
境外导游求职信
2014/02/27 职场文书
会计学习心得体会
2014/09/09 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
事业单位财务人员岗位职责
2015/04/14 职场文书
2015年教育实习工作总结
2015/04/24 职场文书
考勤制度通知
2015/04/25 职场文书
毕业论文致谢信
2015/05/14 职场文书