zoukankan      html  css  js  c++  java
  • 通过python的hashlib模块计算一个文件的MD5值

      Python的hashlib提供了很多摘要算法,如MD5,SHA1等常用算法。

      什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(如MD5值共32位,且每位都是用16进制进行表示)。

      摘要算法就是通过摘要函数对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。

      摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是一个单向函数,计算digest很容易,但通过digest反推数据data却非常困难,并且对原始数据做出任意的修改都会导致计算出的digest完全不同。

      综上所述,只要是一个完整且未被修改过的文件,它的MD5值或者其他算法值都是固定不变的,一旦计算出数值与原作者给出的数值不同,就要当心此文件的安全性了。

    那么,利用python怎么计算一个文件的MD5值呢?以下是简写代码:

     1 import hashlib                                   #导入hashlib模块
     2 def match(file_path,Bytes=1024):
     3     md5_1 = hashlib.md5()                        #创建一个md5算法对象
     4     with open(file_path,'rb') as f:              #打开一个文件,必须是'rb'模式打开
     5         while 1:
     6             data =f.read(Bytes)                  #由于是一个文件,每次只读取固定字节
     7             if data:                          #当读取内容不为空时对读取内容进行update
     8                 md5_1.update(data)
     9             else:                             #当整个文件读完之后停止update
    10                 break
    11     ret = md5_1.hexdigest()                   #获取这个文件的MD5值
    12     return ret
    13 
    14 
    15 print(match(r'E:\红军不怕远征难\我与波多野结衣小姐姐的同居生活.avi'))
  • 相关阅读:
    37. Sudoku Solver(js)
    36. Valid Sudoku(js)
    35. Search Insert Position(js)
    34. Find First and Last Position of Element in Sorted Array(js)
    33. Search in Rotated Sorted Array(js)
    32. Longest Valid Parentheses(js)
    函数的柯里化
    俞敏洪:我和马云就差了8个字
    vue路由传值params和query的区别
    简述vuex的数据传递流程
  • 原文地址:https://www.cnblogs.com/zepc007/p/9449902.html
Copyright © 2011-2022 走看看