通過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'))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM