-3
我遍歷一個包含二進制文件的文件夾,並試圖計算每個文件的哈希值,特別是sha1和sha256。在我的跑步中,我奇怪地爲所有文件獲得相同的sha256值,但sha1值不同(因此是正確的)。不同的SHA1但相同的SHA256
下面是一個輸出文件的截圖,顯示sha1哈希是否正確完成。但sha256不是。 (每個二進制文件的文件名對不起也是它的SHA1)
有什麼錯我的過程嗎?這是Python中的相關代碼。我沒有看到某些東西。抱歉。
out.write("FILENAME,SHA1,SHA256\n")
for root, dirs, files in os.walk(input_path):
for ffile in files:
myfile = os.path.join(root, ffile)
nice = os.path.join(os.getcwd(), myfile)
fo = open(nice, "rb")
a = hashlib.sha1(fo.read())
b = hashlib.sha256(fo.read())
paylname = os.path.basename(myfile)
mysha1 = str(a.hexdigest())
mysha256 = str(b.hexdigest())
fo.close()
out.write("{0},{1},{2}\n".format(paylname, mysha1, mysha256))
您認爲'fo.read()'在讀取文件內容時會讀取什麼內容? – deceze
當你爲sha1哈希執行'fo.read()'時,你已經讀取了整個文件,但是你永遠不會將光標移回到文件的開頭。所以sha256散列的輸入總是相同的(沒有) –
'hashlib.sha256(b'').hexdigest()=='e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'' –