详解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 相关文章推荐
在Django中进行用户注册和邮箱验证的方法
May 09 Python
小小聊天室Python代码实现
Aug 17 Python
python的Tqdm模块的使用
Jan 10 Python
详解python3中zipfile模块用法
Jun 18 Python
python 执行终端/控制台命令的例子
Jul 12 Python
Flask-WTF表单的使用方法
Jul 12 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
Sep 16 Python
python、Matlab求定积分的实现
Nov 20 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
Python 存取npy格式数据实例
Jul 01 Python
Python中常用的os操作汇总
Nov 05 Python
Python基础详解之邮件处理
Apr 28 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中的日期处理方法集锦
2007/01/02 PHP
PHP 压缩文件夹的类代码
2009/11/05 PHP
PHP处理大量表单字段的便捷方法
2015/02/07 PHP
PHP微信开发之查询城市天气
2016/06/23 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
JS实现复制内容到剪贴板功能
2017/02/05 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
2017/02/21 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
Vue通过provide inject实现组件通信
2020/09/03 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
[51:17]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python里将list中元素依次向前移动一位
2014/09/12 Python
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
对Python3 序列解包详解
2019/02/16 Python
深入了解Django中间件及其方法
2019/07/26 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
Python属性和内建属性实例解析
2020/01/14 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
2020/01/18 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
《只有一个地球》教学反思
2014/02/14 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
档案保密承诺书
2014/06/03 职场文书
2014年终个人工作总结
2014/11/07 职场文书
介绍信模板
2015/01/31 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
教学督导岗位职责
2015/04/10 职场文书
2019个人工作自我评价范文(3篇)
2019/09/19 职场文书