磨了好几天的刀,今天终于砍了第一捆柴。
实现的功能:在窗口选择文件,计算其Hash值(SHA-256算法)
显示计算的结果
输入目标hash值,显示对比结果
主要用于对下载文件的完整性进行验证。
源代码如下:
import hashlib
# from hashlib import md5 as Hmd5
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
fileName = filedialog.askopenfilename()
# print(fileName)
fo = open(fileName, 'rb')
contents = fo.read()
fo.close()
Fdigest = hashlib.sha256(contents).hexdigest()
print('SHA-256 value of the selected file is: \n')
print(Fdigest + '\n')
Tsha = input('Input target SHA-256 value: \n')
if Fdigest == Tsha:
print('Yeah!')
else:
print('Oops!')
PS
写的很简单,文件直接整体读入内存做计算。
所以,运行时会吃掉和文件大小相当的内存,对于大文件(比如,大于1GiB,具体要看机器的配置)使用时需要注意。
改进的方法就是文件分块读入,有空/需求的时候再改进。