调用函数参数并获取文件哈希
Calling argument to function and getting the file hashes
我正在尝试获取提供的参数文件的哈希值。这是我当前的代码:
import hashlib
import argparse
md5 = hashlib.md5()
sha1 = hashlib.sha1()
sha256 = hashlib.sha256()
BUF_SIZE = 32768
parse = argparse.ArgumentParser()
parse.add_argument("-test", help = 'testing')
args = parse.parse_args()
def hashing(hashThis=args.test):
with open(hashThis, 'rb') as f:
while True:
data = f.read(BUF_SIZE)
if not data:
break
md5.update(data)
sha1.update(data)
sha256.update(data)
#print hashes
print('MD5: {0}'.format(md5.hexdigest()))
print('SHA1: {0}'.format(sha1.hexdigest()))
print('SHA256: {0}'.format(sha256.hexdigest()))
hashing(hashThis=args.test)
这给了我以下输出:
user@user:~/Testing$ python test.py -test test.txt
MD5: d41d8cd98f00b204e9800998ecf8427e
SHA1: da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
问题是给定的哈希值是针对空文件的,通过使用我得到的同一文件的 sha256sum
user@user:~/Testing$ sha256sum test.txt
8f434346648f6b96df89dda901c5176b10a6d83961dd3c1ac88b59b2dc327aa4 test.txt
它不会从文件中提取数据,如果我在函数外部使用相同的代码,它就可以工作。我觉得我错过了一些明显的东西,但无法弄清楚。
您需要更新 while 循环中的散列对象 - 现在 while 循环仅在 'data' 为空时退出,因此您散列的只是空字节数组
我正在尝试获取提供的参数文件的哈希值。这是我当前的代码:
import hashlib
import argparse
md5 = hashlib.md5()
sha1 = hashlib.sha1()
sha256 = hashlib.sha256()
BUF_SIZE = 32768
parse = argparse.ArgumentParser()
parse.add_argument("-test", help = 'testing')
args = parse.parse_args()
def hashing(hashThis=args.test):
with open(hashThis, 'rb') as f:
while True:
data = f.read(BUF_SIZE)
if not data:
break
md5.update(data)
sha1.update(data)
sha256.update(data)
#print hashes
print('MD5: {0}'.format(md5.hexdigest()))
print('SHA1: {0}'.format(sha1.hexdigest()))
print('SHA256: {0}'.format(sha256.hexdigest()))
hashing(hashThis=args.test)
这给了我以下输出:
user@user:~/Testing$ python test.py -test test.txt
MD5: d41d8cd98f00b204e9800998ecf8427e
SHA1: da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
问题是给定的哈希值是针对空文件的,通过使用我得到的同一文件的 sha256sum
user@user:~/Testing$ sha256sum test.txt
8f434346648f6b96df89dda901c5176b10a6d83961dd3c1ac88b59b2dc327aa4 test.txt
它不会从文件中提取数据,如果我在函数外部使用相同的代码,它就可以工作。我觉得我错过了一些明显的东西,但无法弄清楚。
您需要更新 while 循环中的散列对象 - 现在 while 循环仅在 'data' 为空时退出,因此您散列的只是空字节数组