DirHash
Mounir IDRASSI (mounir@idrix.fr)
 

DirHash Windows 64-Bit Binary
DirHash Windows ARM64 Binary
DirHash Windows 32-Bit Binary
DirHash Source Code Zip
DirHash On GitHub
IDRIX Official DirHash page

 

PayPal Donation:
Donate to DirHash using PayPal

Bitcoin Donation:
1HJmXY5r1BeS4k4UcdYxvwW4Y7GV2o2prj

 

 

 

 


Welcome

DirHash is a Windows console program that computes the hash of a given directory content or a single file. It also supports creating SUM of files in a way similar to classical shasum program. Recursive Lexicographical order is used for browsing the directory hierarchy so that the computed hash can be seen as unique fingerprint of the target directory. Supported hashing algorithms are MD5, SHA-1, SHA-256, SHA-384, SHA-512, Streebog, Blake2s, Blake2 and Blake3.

Usage

DirHash can be invoked from the command like as follows:

DirHash.exe DirectoryOrFilePath [HashAlgo] [-t ResultFileName] [-progress] [-sum] [-sumRelativePath] [-includeLastDir] [-verify FileName] [-threads] [-clip] [-lowercase] [-overwrite] [-quiet] [-nologo] [-nowait] [-skipError] [-hashnames [-stripnames]] [-exclude pattern1] [-exclude patter2] [-nofollow]

DirHash.exe -benchmark [HashAlgo | All] [-t ResultFileName] [-clip] [-overwrite] [-quiet] [-nologo] [-nowait]

Possible values for HashAlgo (not case sensitive):

  • MD5
  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • Streebog
  • Blake2s
  • Blake2b
  • Blake3
  • Any combination of the above separated by comma, except when -verify is used

If HashAlgo is not specified, Blake3 is used by default.

ResultFileName specifies an optional text file where the result will be appended.

For example, setting HashAlgo to sha256,sha512 will use SHA256 and SHA512 for hashing the input file or directory and sha256,sha512,blake2s will use SHA256, SHA512 and Blake2s. If -sum is used with multiple hash algorithms, a SUM file will be generated for each hash algorithm and its file name will ResultFileName appended with the hash algorithm name. For example, if -sum is used with sha256,sha512, then two SUM files will be generated: ResultFileName.sha256 and ResultFileName.sha512.

if -benchmark is specified, program will perform speed benchmark of the selected hash algorithm

if -mscrypto specified, program will use Windows native implementation of hash algorithms (This is always enabled on Windows ARM platforms since OpenSSL is too slow on them).

if -sum is specified, program will output the hash of every file processed in a format similar to shasum.

if -sumRelativePath is specified (only when -sum is specified), the file paths are stored in the output file as relative to the input directory.

if -verify is specified, program will verify the hash of every file processed against its hash value present in the given checksum file.

if -includeLastDir (only when -sum or -verify is specified), the last directory name of the input directory is included in the SUM file entries and used in the verification process. This switch implies -sumRelativePath.

if -threads is specified (only when -sum or -verify specified), multithreading will be used to accelerate hashing of files.

if -clip is specified, the hash result is copied to Windows clipboard. This switch is ignored when -sum is specified.

if -lowercase is specified, program outputs hash value(s) in lower case instead of upper case.

if -progress is specified, information about the progress of file hash operation is displayed.

if -overwrite is specified (only when -t is present), the output text file will be overwritten instead of having hash result appended to it.

if -quiet is specified, no text is displayed or written to the output file except the hash value.

if -nowait is specified, program will exit immediately after displaying the hash result. Otherwise, it prompts user to hit a key before it exits.

if -hashnames is specified, the case sensitive path of the files and directories will be included in the hash computation. Otherwise, only files content is used.

if -stripnames is specified (only when -hashnames also specified), only the the last path portion of files and directoroes is used for hash computation.

if -exclude is specified, it must be followed by a string indicating the file type that must be excluded from the hash computation. For example, to exclude .log files, you specify "-exclude *.log". This switch can be repeated many times in the command line to specify different file types to exclude.

if -skipError is specified, program will ignore any non-fatal errors and it will continue processing.

If -nologo is specified, program will not display the copyright message and version number on startup.

If -nofollow is specified, don't follow symbolic links, junction points or mount points, thus excluding them from hash computation.

DirHash can also be configured using a configuration file called DirHash.ini and which must be on the same folder as DirHash.exe.
When Sum=True is specified in DirHash.ini, it will have an effect only if -verify is not specified in the command line.
An example of DirHash.ini is shown below:

[Defaults]
Hash=Blake3
Sum=True
SumRelativePath=True
IncludeLastDir=False
Threads=True
Quiet=False
Nologo=True
NoWait=True
ShowProgress=False
clip=True
hashnames=False
stripnames=False
lowercase=False
MSCrypto=False
NoFollow=False

 

© COPYRIGHT 2023 ALL RIGHTS RESERVED Mounir IDRASSI (https://www.idrix.fr)

BUILDING FROM SOURCE

DirHash uses OpenSSL for its cryptographic operations on x86 and x64 platforms and the source comes with pre-built library files of OpenSSL 1.1.1g. DirHash can also use Windows native implementation for hash algorithms (using -mscrypto switch) which can enhance performance on some configuration especially ARM64.
DirHash source code comes with a Microsoft Visual Studio 2019 solution file.
 
LICENSE

DirHash is licensed under 3-clause BSD license ("New BSD License").

The text of the license is available here