簡體   English   中英

為什么我在系統DLL上的Powershell和32bit-Python之間獲得不同的SHA1哈希?

[英]Why do I get a different SHA1 hash between Powershell and 32bit-Python on a system DLL?

我正在嘗試在Python中針對二進制文件計算SHA1哈希值,以便以后進行比較。 為了確保工作正常,我使用了幾種方法來檢查結果的有效性。 而且,我很高興我做到了。 Powershell和Python返回不同的值。 7zip的SHA1功能與Powershell的結果一致,微軟的FCIV也同意Python的結果。

蟒蛇:

import hashlib
with open("C:\\Windows\\system32\\wbem\\wmiutils.dll", "rb") as f:
     print(hashlib.sha1(f.read()).hexdigest())

電源外殼:

PS C:\> Get-FileHash C:\Windows\System32\wbem\wmiutils.dll -Algorithm SHA1

結果:

Python: d25f5b57d3265843ed3a0e7b6681462e048b29a9
Powershell: B8C757BA70F6B145AD191A1B09C225FBA2BD55FB

編輯:針對system32 dll的32位Python和64位Powershell。 那就是問題所在。 我有一些功課要做,但基本上,32位和64位應用程序接收不同的文件,因此,不同的哈希結果。 我啟動了64位python並對dll和64位PowerShell進程運行完全相同的代碼。 將這兩個進程作為32位運行時收到一致的結果。

EDIT2:找到了解釋這個問題的資源。 至少它幫助我了解了正在發生的事情: https//www.sepago.com/blog/2008/04/20/windows-x64-all-the-same-yet-very-different-part-7-file-系統和注冊表

這種情況正在發生,因為您正在運行32位版本的Python並訪問系統DLL - Windows神奇地將您重定向到dbit的32位版本,而PowerShell作為64位進程運行並且看到了64位版本的DLL。

我不確定我是否很高興我知道這一點或對此感到難過。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM