Pro Windows můžete použít PowerShell, který je standardně nainstalován na Windows 7 / Server 2008 R2 a novějších. Funkce Get-FileHash byla představena v PowerShell v4, který je dodáván s Windows 8.1 a Windows Server 2012 R2. U starších verzí PowerShellu postačí tyto skripty z blogu Jamese Manninga.
Příklad použití Get-FileHash:
C:\Windows> Get-FileHash -Algorithm md5 .\notepad.exe
Algorithm Hash Path
--------- ---- ----
MD5 24DA05ADE2A978E199875DA0D859E7EB C:\Windows\notepad.exe
Podporované algoritmy jsou SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5 a RIPEMD160.
Jediným nástrojem, který mě napadá, zejména pro Unixy (nebo jakkoli byste to měli množit), je openssl:
openssl dgst -sha256 path/to/file
Příkaz openssl dgst poskytuje mnoho běžných možností hašování a openssl je standardně nainstalován na většině unixových systémů a je také dostupný pro Windows. Věřím, že se dodává i s OSX. Souhlasím, pro Windows není ideální situace dodávat bez takového nástroje.
Co se týče nástrojů GUI, osobně neznám žádné jiné než HashCalc, o kterém jste se již zmínili.
Ve smíšeném prostředí Windows/Unix používám pro běžné kryptografické algoritmy:
- OpenSSL pro mnoho výpočtů, zejména hash (ale ne HMAC) a manipulace s certifikáty X.509.
hashlib
Pythonu ahmac
pro SHA a HMAC.
Bohužel ani jeden není dodáván s Windows, vyžadují samostatnou instalaci.
Zde je jednoduchý jednoduchý řádek pro výpočet HMAC souboru pomocí Pythonu. Zadejte klíč v hexadecimální soustavě do terminálu (nebo jej předejte na standardní vstup pomocí echo … |
, ale pozor, klíč pak skončí v historii shellu). Soubor je načten do paměti, což u velkých souborů není možné.
python -c "import binascii, hashlib, hmac, sys; print hmac.new(binascii.unhexlify(str.strip(sys.stdin.readline())), open(sys.argv[1]).read(), hashlib.sha256).hexdigest()" myfile.dat
Ve Windows je jednoduchý ověřovač hash (podporující SHA a několik dalších a HMAC), který může použít i netechnický člověk, SlavaSoft HashCalc. Bohužel to není open-source, takže možná nebudete mít maximální důvěru v jeho fungování.