前言
在linux有個命令叫做md5sum,能生成檔案的md5值,一般情況下都會將結果記錄到乙個檔案中用於校驗使用,比如會這樣使用:
[crazyant@lo程式設計客棧calhost pythonmd5]$ more sample_file
www.crazyant.net
www.51projob.com
[crazyant@localhost pythonmd5]$ md5sum sample_file > sample_file.md5file
[crazyant@localhost pythonmd5]$ more sample_file.md5file
311d384505e3622ccf85d88930e2b0a0 sample_file
[crazyant@localhost pythonmd5]$ md5sum -c sample_file.md5file
sample_file: ok
其中md5sum -c用於檢測生成的md5值是否正確。
使用python生成檔案md5值以及生成和md5sum結果一樣的結果檔案
python可以使用hashlib的md5模組對檔案內容進行md5校驗碼生成,如果要生成和md5sum一樣的結果檔案,只需要將md5結果值和檔名輸出一行,中間有兩個空格輸出即可。
測試**:
# -*- encoding:utf-8 -*-
from hashlib import md5
import os
def generate_file_md5value(fpath):
'''以檔案路徑作為引數,返回對檔案md5後的值
'''m = md5()
# 需要使用二進位制格式讀取檔案內容
a_file = open(fpath, 'rb')
m.update(a_file.read())
a_file.close()
retnpdjzxwzkurn m.hexdigest()
def generate_file_md5sumfile(fpath):
fname = os.path.basename(fpath)
fpath_md5 = "%s.md5" % fpath
fout = open(fpath_md5, "w")
fout.write("%s %s\n" % (generate_file_md5value(fpath), fname.strip()))
print "genewww.cppcns.comrate success, fpath:%s" % fpath_md5
fout.flush()
fout.close()
if __name__ == "__main__":
fpath = "/home/users/workbench/pythonmd5/sample_file"
# 測試一:以檔案路徑作為引數,獲得md5後的字串
print generate_file_md5value(fpath)
# 測試二:生成和linux命令:md5sum同樣結果的.md5檔案
generate_file_md5sumfile(fpath)
執行結果:
[crazyant@localhost pythonmd5]$ python generatemd5file.py
311d384505e3622ccf85d88930e2b0a0
generate success, fpath:/home/crazyant/workbench/pythonmd5/sample_file.md5
[crazyant@localhost pythonmd5]$ md5sum -c sample_file.md5
sam ok
注意點在windows下開發的**,如果直接提交到linux執行,經常因為windows下的換行符是\r\n而linux是\n的緣故導致**執行失敗,一般情況下都要進行一下轉換。
總結本文標題: 利用python生成檔案md5校驗值函式的方法
本文位址:
MD5 生成檔案校驗
linux 下 shell命令 製作md5碼 也用於軟體的md5校驗md5演算法常常被用來驗證網路檔案傳輸的完整性,防止檔案被人篡改。md5 全稱是報文摘要演算法 message digest algorithm 5 此演算法對任意長度的資訊逐位進行計算,產生乙個二進位制長度為128位 十六進製制長...
Python生成檔案md5校驗值函式
linux有個命令叫做md5sum,能生成檔案的md5值,一般情況下都會將結果記錄到乙個檔案中用於校驗使用,比如會這樣使用 crazyant localhost pythonmd5 more sample file www.crazyant.net www.51projob.com crazyant...
如何利用python生成MD5並去重
給每個檔案生成乙個md5值,來對檔案進行加密,是常用的檔案校驗方法,但是md5的缺陷就是不能防止碰撞,所以不同檔案生成的md5可能是相cyldbf同的,因此就需要進行去重操作。為方便演示,我用txt檔案代替資料夾,用txt檔案中的字串代替資料夾中檔案來生成md5值並進行去重操作。每個txt檔案中有字...