Sto provando a calcolare i valori di hash SHA1 in Python rispetto ai file binari per un confronto successivo. Per assicurarmi che le cose funzionino, ho usato diversi metodi per verificare la validità del mio risultato. E sono contento di averlo fatto. Powershell e Python restituiscono valori diversi. La funzione SHA1 di 7zip concorda con i risultati di Powershell e FCIV di Microsoft concorda con i risultati di Python.Perché ottengo un hash SHA1 diverso tra PowerShell e 32 bit-Python su una DLL di sistema?
Python:
import hashlib
with open("C:\\Windows\\system32\\wbem\\wmiutils.dll", "rb") as f:
print(hashlib.sha1(f.read()).hexdigest())
PowerShell:
PS C:\> Get-FileHash C:\Windows\System32\wbem\wmiutils.dll -Algorithm SHA1
Risultati:
Python: d25f5b57d3265843ed3a0e7b6681462e048b29a9
Powershell: B8C757BA70F6B145AD191A1B09C225FBA2BD55FB
EDIT: 32-bit Python e 64 bit Powershell contro una dll system32. Quello era il problema. Ho alcuni compiti da fare ma fondamentalmente, le applicazioni a 32 bit e 64-bit ricevono un file diverso e, quindi, diversi risultati hash . Ho lanciato Python a 64 bit e ho eseguito lo stesso identico codice contro della DLL e come processo PowerShell a 64 bit. Ricevuti risultati coerenti quando si eseguono entrambi i processi come 32 bit.
EDIT2: trovato questa risorsa che spiega un po 'le cose. Almeno ha aiutato a capire cosa sta succedendo: https://www.sepago.com/blog/2008/04/20/windows-x64-all-the-same-yet-very-different-part-7-file-system-and-registry
Non ricordo esattamente come Windows lo fa, ma potrebbe essere che Python sia a 32 bit e si sta ottenendo la versione a 32 bit di wmiutils.dll? Provalo su un altro file che non sia una DLL e non in system32. –
Inchiodato! Lanciata una finestra Powershell a 32 bit e restituita: D25F5B57D3265843ED3A0E7B6681462E048B29A9 – mustbenewhere
Ciò potrebbe anche essere dovuto a una differenza nel modo in cui Python/FCIV e 7zip/PowerShell gestiscono la conversione da stringa a bit: vedere [Hash SHA-1 sempre uguale a (https: // security.stackexchange.com/questions/18290/is-sha-1-hash-always-the-same) – JGreenwell