详解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实现的jpg格式图片修复代码
Apr 21 Python
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
浅谈Python NLP入门教程
Dec 25 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
Mar 13 Python
对Python3 * 和 ** 运算符详解
Feb 16 Python
python调用摄像头拍摄数据集
Jun 01 Python
python设置环境变量的原因和方法
Jun 24 Python
浅析使用Python搭建http服务器
Oct 27 Python
Python的PIL库中getpixel方法的使用
Apr 09 Python
pandas to_excel 添加颜色操作
Jul 14 Python
Python中过滤字符串列表的方法
Dec 22 Python
利用Python脚本写端口扫描器socket,python-nmap
Jul 23 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
各浏览器对document.getElementById等方法的实现差异解析
2013/12/05 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
JavaScript中的ubound函数使用实例
2014/11/04 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
EasyUI在表单提交之前进行验证的实例代码
2016/06/24 Javascript
js微信分享API
2020/10/11 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
使用Layui搭建后台管理界面的操作方法
2019/09/20 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
vue项目打包后请求地址错误/打包后跨域操作
2020/11/04 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
如何用Python来搭建一个简单的推荐系统
2019/08/07 Python
Python使用Pandas读写Excel实例解析
2019/11/19 Python
pytorch中的transforms模块实例详解
2019/12/31 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
python海龟绘图之画国旗实例代码
2020/11/11 Python
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
《雨霖铃》听课反思
2014/02/13 职场文书
房产委托公证书样本
2014/04/04 职场文书
教师自我剖析材料
2014/09/29 职场文书
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle