根据用户输入散列 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