python 實現文件哈希值計算

運行效果
在這裏插入圖片描述

# -*- coding: utf-8 -*-

import hashlib                                   #導入hashlib模塊
import tkinter
import tkinter.messagebox
import tkinter.filedialog
from tkinter import *

def hash(file_path,Bytes=1024):
    md5_1 = hashlib.md5()                        #創建一個md5算法對象
    with open(file_path,'rb') as f:              #打開一個文件,必須是'rb'模式打開
        while 1:
            data =f.read(Bytes)                  #由於是一個文件,每次只讀取固定字節
            if data:                             #當讀取內容不爲空時對讀取內容進行update
                md5_1.update(data)
            else:                                #當整個文件讀完之後停止update
                break
    ret = md5_1.hexdigest()                      #獲取這個文件的MD5值
    return ret


#print(hash(r'E:/lujianfeiGitWork/sae/1/json/mnb/apk/plugin1.apk'))
    
def clickbrowser():
    filenames = tkinter.filedialog.askopenfilenames()
    if len(filenames) != 0:
        path.set(filenames[0])
    pass

def clickfun(file_path):
    if file_path == "":
        tkinter.messagebox.showinfo(title='提示', message='請輸入文件路徑')
        return
    output.set(hash(file_path))    
    pass


top = tkinter.Tk()
top.title("文件 hash 值計算")
path = StringVar(top, value='')
output = StringVar(top, value='')

label = tkinter.Label(top, text = '輸入文件路徑:')
inputEntry = tkinter.Entry(top, width = 50, textvariable = path)
btBrowser = tkinter.Button(top, text ="瀏覽", command = lambda:clickbrowser())
btClick = tkinter.Button(top, text ="計算文件 hash", command = lambda:clickfun(inputEntry.get()))
olabel = tkinter.Label(top, text = '輸出 hash:')
outputEntry = tkinter.Entry(top, width = 50, textvariable = output)
 
label.grid(row=0,column=0) 
inputEntry.grid(row=0,column=1) 
btBrowser.grid(row=0,column=2) 
olabel.grid(row=1,column=0) 
outputEntry.grid(row=1,column=1) 
btClick.grid(row=1,column=2) 

col_count, row_count = top.grid_size()

# 進入消息循環
top.mainloop()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章