根据用户输入散列 Python 中的 .iso 文件;可以散列与目录对应的字符串,而不是实际文件
Hashing in .iso file in Python from user input; can hash string corresponding with directory, not actual file
我正在尝试根据用户输入散列 .iso 文件。使用Python中的open()函数,我可以成功哈希对应.iso文件本身目录的字符串,但是无法得到.iso文件的正确哈希。
我的代码如下:
import hashlib
userInput = input("Path to the file: ")
isoFile = open(userInput, 'rb')
result = hashlib.sha512(userInput.encode())
print("The hash value of the file is: ")
print(result.hexdigest())
我尝试在 print() 函数之前添加以下行:
readIso = isoFile.read()
result.update(readIso)
它生成一个不同的散列,表面上对应于实际的 .iso 文件。
根据sha512sum
,.iso文件的散列应该是:
c9b75d55fa501415ad8a1b3e597cb3c398aaf4f8c08e9219b676c07280b1d9d8cd2c6dcc6e97e077acef3d4fac4e15b021df41671b5e8f15bb557050a284e684
当运行脚本附加上述行时,输出变为:
28cf1c2aabc1758dafb89ed5d3e75117e255bd4101522972e30d7b4f2a4b803a979747db3c655a4f475eef8d2863dd373c5c260881c6fe067d8215641e37bc09
在此先感谢您提供的任何帮助。
我通过做几件事解决了问题:
我从 result = hashlib.sha512(userInput.encode())
中删除了 userInput.encode
并且我在 isoFile = open(userInput, 'rb')
之后将以下循环附加到我的脚本中:
while True:
readIso = isoFile.read(1024)
if readIso:
result.update(readIso)
else:
hexHash = result.hexdigest()
break
我正在尝试根据用户输入散列 .iso 文件。使用Python中的open()函数,我可以成功哈希对应.iso文件本身目录的字符串,但是无法得到.iso文件的正确哈希。
我的代码如下:
import hashlib
userInput = input("Path to the file: ")
isoFile = open(userInput, 'rb')
result = hashlib.sha512(userInput.encode())
print("The hash value of the file is: ")
print(result.hexdigest())
我尝试在 print() 函数之前添加以下行:
readIso = isoFile.read()
result.update(readIso)
它生成一个不同的散列,表面上对应于实际的 .iso 文件。
根据sha512sum
,.iso文件的散列应该是:
c9b75d55fa501415ad8a1b3e597cb3c398aaf4f8c08e9219b676c07280b1d9d8cd2c6dcc6e97e077acef3d4fac4e15b021df41671b5e8f15bb557050a284e684
当运行脚本附加上述行时,输出变为:
28cf1c2aabc1758dafb89ed5d3e75117e255bd4101522972e30d7b4f2a4b803a979747db3c655a4f475eef8d2863dd373c5c260881c6fe067d8215641e37bc09
在此先感谢您提供的任何帮助。
我通过做几件事解决了问题:
我从 result = hashlib.sha512(userInput.encode())
userInput.encode
并且我在 isoFile = open(userInput, 'rb')
之后将以下循环附加到我的脚本中:
while True:
readIso = isoFile.read(1024)
if readIso:
result.update(readIso)
else:
hexHash = result.hexdigest()
break