用python計算檔案的MD5值

2022-10-04 13:18:29 字數 2577 閱讀 3351

md5是一種常見不可逆加密演算法,使用簡單,計算速度快,在很多場景下都會用到,比如:給使用者上傳的檔案命名,資料庫中儲存的使用者密www.cppcns.com碼,**檔案後檢驗檔案是否正確等。下面講解在python中如何使用md5演算法。

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys

import hashlib

reload(sys)

sys.setdefaultencoding('utf-8')

if __name__kdrycck == '__main__':

content = "hello"

md5hash = hashlib.md5(content)

md5 = md5hash.hexdigest()

print(md5)

執行上述**,輸出

用php自帶的md5函式計算同乙個字串,驗證下hello的md5是否正確。

<?php $content = "hello";

$md5 = md5($content);

var_dump($md5); // 輸出 5d41402abc4b2a76b9719d911017c592

檔案md5計算跟字串計算是一樣,直接使用hashlib的md5方法,然後hexdigests就好了。同樣用php**驗證下

var_dump($file_md5); // 輸出 ac3ee699961c58ef80a78c2434efe0d0

從結果可以看出md5是一樣的,檔案md5值也不過如此呀,心裡竊喜。。。

如果大檔案呢,比如幾個g呢,上述**肯定會記憶體溢位,怎麼辦呢,可以分塊讀取檔案內容並計算。

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys

import hashlib

def get_file_md5(fname):

m = hashlib.md5() #建立md5物件

with www.cppcns.comopen(fname,'rb') as fobj:

while true:

data = fobj.read(4096)

if not da程式設計客棧ta:

break

m.update(data) #更新md5物件

return m.hexdigest() #返回md5物件

reload(sys)

sys.setdefaultencoding('utf-8')

if __name__ == '__main__':

file_name = "mongodb_us.zip"

file_md5 = get_file_md5(file_name)

print(file_md5) # 0f45cdbf14de54001e82a17c3d199a4b

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import hashlib

def get_file_md5(file_name):

"""計算檔案的md5

:param file_name:

:return:

"""m = hashlib.md5() #建立md5物件

with open(file_name,'rb') as fobj:

while true:

data = fobj.read(4096)

if not data:

break

m.update(data) #更新md5物件

return m.hexdigest() #返回md5物件

def get_str_md5(content):

"""計算字串md5

:param content:

:return:

"""m = hashlib.md5(content) #建立md5物件

return m.hexdigest()

好了,關於md5的計算就到這裡,有不同見解的同學,歡迎拍磚,一起來**,謝謝。

用python計算檔案的md5值

在python中內建了md5的實現,就是md5模組,因此可以很簡單的處理比較兩個檔案是否一致的問題。如以下 片斷 import os,sys,md5 f1 open f 1.txt r f2 open f 1.txt r print md5.new f1.read digest md5.new f2...

用Python計算檔案的MD5值

儘管計算md5有很多小工具,重灌系統後還得去找,就自己用python寫了乙個 ge 5.py import hashlib import sys if name main if len sys.argv 2 sys.exit argv error m hashlib.md5 n 1024 4 inp...

計算檔案的md5

本地配置檔案,或要做熱更的檔案,通過計算檔案md5與儲存在伺服器端的值做對比,如果不一致則說明本地檔案過舊,或者被非法修改過。算檔案md5方法為 讀取檔案為二進位製流,算出md5值轉為字串。using system using system.collections.generic using sys...