linux下校驗檔案md5值,最簡單的方法就是執行md5sum命令
md5sum filename
原本打算用subprocess呼叫系統命令來獲取md5值,
[python]view plain
copy
print?
import
subprocess,shlex
cmd = "md5sum filename"
p = subprocess(shlex.split(cmd), stdout=subprocess.pipe)
p.stdout.read()
不過python有自帶的md5模組hashlib,用起來簡單很多,
python hashlib模組的使用說明
fd = hashlib.md5() #獲取乙個md5加密演算法物件
fd.update("string") #指定需要加密的字串
fd.hexdigest() #獲取加密後的16進製制字串
例項[python]view plain
copy
print?
#!/usr/bin/env python
#coding : utf-8 3 4 import sys
import
hashlib
defmd5sum(filename):
fd = open(filename,"r"
) fcont = fd.r
fd.close()
fmd5 = hashlib.md5(fcont)
return
fmd5
if__name__ ==
"__main__"
:
fmd5 = md5sum(sys.argv[1
])
fmd5.hexdigest()
其中fmd5 = hashlib.md5(fcont)等同於
fmd5 = hashlib.md5(fcont)
fmd5.update(fcont)
需要注意的是,傳入 hashlib.md5() 的應該是 檔案內容而不是檔名,這樣才是對檔案內容產生md5校驗碼;
另外,呼叫了 hashlib.md5() 後返回的是乙個物件,想要獲得linux下 md5sum 同樣的效果,還要呼叫一下 hexdigest() 方法。
但是,這個方法有點過於粗暴,當檢驗大檔案時,一次將所有檔案內容讀入記憶體,實在耗費較大,
網上給出例項
根據檔案塊長度,依次獲取檔案內容讀入記憶體,通過update()逐次更新校驗值,
[python]view plain
copy
print?
#!/usr/bin/env python 2
#coding : utf-8 3 import hashlib
defmd5hex(word):
""" md5加密演算法,返回32位小寫16進製制符號
"""if
isinstance(word, unicode):
word = word.encode("utf-8"
) elif
notisinstance(word, str):
word = str(word)
m = hashlib.md5()
m.update(word)
return
m.hexdigest()
defmd5sum(fname):
""" 計算檔案的md5值
"""def
read_chunks(fh):
fh.seek(0
) chunk = fh.read(8096
) while
chunk:
yield
chunk
chunk = fh.read(8096
) else
: #最後要將游標放回檔案開頭
fh.seek(0
) m = hashlib.md5()
ifisinstance(fname, basestring) \
andos.path.exists(fname):
with open(fname, "rb"
) as fh:
forchunk
inread_chunks(fh):
m.update(chunk)
#上傳的檔案快取 或 已開啟的檔案流
elif
fname.__class__.__name__ in[
"stringio"
, "stringo"
] \
orisinstance(fname, file):
forchunk
inread_chunks(fname):
m.update(chunk)
else
: return
""40
return
m.hexdigest()
檔案MD5校驗
1.什麼是md5 md5訊息摘要演算法 英語 md5 message digest algorithm 一種被廣泛使用的密碼雜湊函式,可以產生出乙個128位 16位元組 的雜湊值 hash value 用於確保資訊傳輸完整一致。md5由美國密碼學家羅納德 李維斯特 ronald linn rives...
Linux中檔案MD5校驗
md5sum命令用於生成檔案的md5數字摘要,並可以驗證檔案內容是否發生了改變,間接地還可以檢驗兩個檔案內容是否完全相同。因為md5sum是讀取檔案內容來計算校驗碼的,因此只能驗證檔案內容,而無法驗證檔案屬性。root xuexi cp a etc fstab tmp fstab root xuex...
Linux中檔案MD5校驗
md5sum命令用於生成檔案的md5數字摘要,並可以驗證檔案內容是否發生了改變,間接地還可以檢驗兩個檔案內容是否完全相同。因為md5sum是讀取檔案內容來計算校驗碼的,因此只能驗證檔案內容,而無法驗證檔案屬性。root xuexi cp a etc fstab tmp fstab root xuex...