详解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进阶教程之循环对象
Aug 30 Python
Python中if __name__ == '__main__'作用解析
Jun 29 Python
Python函数式编程
Jul 20 Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 Python
《Python学习手册》学习总结
Jan 17 Python
Python开发网站目录扫描器的实现
Feb 21 Python
详解Python:面向对象编程
Apr 10 Python
python二进制读写及特殊码同步实现详解
Oct 11 Python
使用python3批量下载rbsp数据的示例代码
Dec 20 Python
Django models文件模型变更错误解决
May 11 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
基于Python爬取51cto博客页面信息过程解析
Aug 25 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使用百度ping服务代码实例
2014/06/19 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
PHP目录操作实例总结
2016/09/27 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
JS将秒换成时分秒实现代码
2013/09/03 Javascript
js精准的倒计时函数分享
2016/06/29 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
功能强大的Bootstrap组件(结合js)
2016/08/03 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
详解JavaScript的数据类型以及数据类型的转换
2019/04/20 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
微信小程序实现搜索功能
2020/03/10 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
[01:27]2014DOTA2展望TI 剑指西雅图IG战队专访
2014/06/30 DOTA
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现登陆文件验证方法
2018/10/06 Python
django之从html页面表单获取输入的数据实例
2020/03/16 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
经销商会议欢迎词
2014/01/11 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
领导干部“四风”查摆问题个人整改措施
2014/10/28 职场文书
见习报告的格式
2014/11/04 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
长城的导游词
2015/01/30 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
入党转正介绍人意见
2015/06/03 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
Windows server 2012搭建FTP服务器
2022/04/29 Servers