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...