繁体   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