Python生成檔案md5校驗值函式

2021-09-21 06:35:14 字數 4724 閱讀 3982

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()

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

)

執行結果:

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