linux有個命令叫做md5sum,能生成檔案的md5值,一般情況下都會將結果記錄到乙個檔案中用於校驗使用,比如會這樣使用:
[crazyant@localhost 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 1
2
3
4
5
6
7
8 [
crazyant
@localhost
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() return 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 "generate 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) 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# -*- 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()
returnm.
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()
"generate success, fpath:%s"
%fpath_md5
fout
.flush()
fout
.close()
if__name__
=="__main__"
:
fpath
="/home/users/workbench/pythonmd5/sample_file"
# 測試一:以檔案路徑作為引數,獲得md5後的字串
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 sample_file: ok 1
2
3
4
5 [
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
sample_file:ok
注意點在windows下開發的**,如果直接提交到linux執行,經常因為windows下的換行符是\r\n而linux是\n的緣故導致**執行失敗,一般情況下都要進行一下轉換。
MD5 生成檔案校驗
linux 下 shell命令 製作md5碼 也用於軟體的md5校驗md5演算法常常被用來驗證網路檔案傳輸的完整性,防止檔案被人篡改。md5 全稱是報文摘要演算法 message digest algorithm 5 此演算法對任意長度的資訊逐位進行計算,產生乙個二進位制長度為128位 十六進製制長...
利用Python生成檔案md5校驗值函式的方法
前言 在linux有個命令叫做md5sum,能生成檔案的md5值,一般情況下都會將結果記錄到乙個檔案中用於校驗使用,比如會這樣使用 crazyant lo程式設計客棧calhost pythonmd5 more sample file www.crazyant.net www.51projob.co...
檔案MD5校驗
1.什麼是md5 md5訊息摘要演算法 英語 md5 message digest algorithm 一種被廣泛使用的密碼雜湊函式,可以產生出乙個128位 16位元組 的雜湊值 hash value 用於確保資訊傳輸完整一致。md5由美國密碼學家羅納德 李維斯特 ronald linn rives...