要求
用Sage或Python实现这样一个程序,输入任意文件,产生该文件的数字指纹。要求:
1、命令行操作:fileDig -i Filename -s HashFunc
2、-s参数后面可以选用不同的hash函数。
3、最后能统计出输入的文件大小,以及产生数字指纹所需要的时间。
代码
import hashlib
import os
import time
def CalcSha1(filepath):
with open(filepath,'rb') as f:
sha1obj = hashlib.sha1()
sha1obj.update(f.read())
hash = sha1obj.hexdigest()
print(hash)
return hash
def CalcMD5(filepath):
with open(filepath,'rb') as f:
md5obj = hashlib.md5()
md5obj.update(f.read())
hash = md5obj.hexdigest()
print(hash)
return hash
if __name__ == "__main__":
print("sha1")
t0 = time.time()
CalcSha1("rsa.py")
print (time.time() - t0, "seconds wall time")
print("md5")
t1 = time.time()
CalcMD5("rsa.py")
print (time.time() - t1, "seconds wall time")
x=os.path.getsize("rsa.py")
print(x,"bit")
else:
print("no filename")
运行截图
分析
代码里实现了两个hash计算,一个是sha1一个是md5
- 从运行结果来看,多次运行产生数字指纹需要的时间存在一定的误差但在接受范围内
- 其次就是产生hash值的时间都很小只需要0.00x秒就可以,符合认识中的简单可行性。