详解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实现代码统计工具(终极篇)
Jul 04 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
python leetcode 字符串相乘实例详解
Sep 03 Python
python中的数据结构比较
May 13 Python
python实现beta分布概率密度函数的方法
Jul 08 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
Python更新所有已安装包的操作
Feb 13 Python
tensorflow常用函数API介绍
Apr 19 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
jupyter使用自动补全和切换默认浏览器的方法
Nov 18 Python
Python中对象的比较操作==和is区别详析
Feb 12 Python
python使用BeautifulSoup 解析HTML
Apr 24 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&&mysql)二
2006/10/09 PHP
PHP获取当前文件所在目录 getcwd()函数
2009/05/13 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
一端时间轮换的广告
2006/06/26 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
JS实现为排序好的字符串找出重复行的方法
2016/03/02 Javascript
jQuery移动端日期(datedropper)和时间(timedropper)选择器附源码下载
2016/04/19 Javascript
基于jQuery的Web上传插件Uploadify使用示例
2016/05/19 Javascript
js与jquery分别实现tab标签页功能的方法
2016/11/18 Javascript
jquery点击展示与隐藏更多内容
2016/12/03 Javascript
如何使用angularJs
2017/05/08 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
javascript随机变色实例代码
2019/10/15 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
Python中logging模块的用法实例
2014/09/29 Python
python通过wxPython打开一个音频文件并播放的方法
2015/03/25 Python
Python实现Windows上气泡提醒效果的方法
2015/06/03 Python
python小程序实现刷票功能详解
2019/07/17 Python
python numpy中cumsum的用法详解
2019/10/17 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
python如何调用php文件中的函数详解
2020/12/29 Python
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
日语翻译个人求职的自我评价
2013/10/14 职场文书
双方协议书
2014/04/22 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS