multiSum is a portable utility that enables you to perform file hashing via the command-line.
multiSum makes the most common hashes available in one tool and is capable of calculating them all on a single pass through a given file. It uses one thread per selected hash to leverage multi-core CPUs. In addition to computing many hashes in parallel, multiSum also features Unicode and long path support and can handle NTFS alternate data streams.
multiSum's output is entirely customizable, allowing you to use it to generate .sfv files, .md5 files, etc. Supported hashes are Fletcher32, Adler32, CRC32 (optimized implementation, outperforms the native windows function), MD2, MD4, MD5, RIPEMD160, SHA1, various SHA2, various SHA3, various Tiger, various Blake2B, and Whirlpool.
multiSum also has a verification mode for processing existing checksum files with the following types supported: .sfv, .md5, .sha1, .sha256, .blake2/.blake2b. There is also a benchmarking mode that is able to test hash speeds.
multiSum.exe [-s:SUBDIRECTORY_FLAG] [-o:OUTPUT_FORMAT] FILES_AND_FOLDERS File or directory names must be quoted if they contain spaces. More than one file or folder can be listed, separated by spaces.
SUBDIRECTORY_FLAG: Must be either on (-s:1) or off (-s:0) If any directories are specified, this flag determines if we hash files found in all subdirectories or only those immediately inside the specified directory. Defaults are no subdirectory processing: -s:0
OUTPUT_FORMAT String: The format string defines how the program's output looks, as well as what hashes are calculated; the string must be quoted if it contains spaces. For each file processed, the following replacements are made in the format string, and that string is output: %FILEPATH% - the full path to the file, including the drive letter. %FILENAME% - the file name. %FILESIZE% - the file size. %RELATIVEPATH% - the full path to the file with the CWD removed. %CTIME% OR %MTIME% - the file's creation or modification time. %RTIME% - the run time of the program. "n," "t" or "r"- replaced with a newline, tab, or carriage return. The following hash replacements will be made using lowercase hex: Checksums: %FLETCHER32%, %ADLER32%, %CRC32% MD Family: %MD2%, %MD2CNG%, %MD4%, %MD4CNG%, %MD5%, %MD5CNG% %RIPEMD160% SHA-1 verions: %SHA1%, %SHA1CNG% SHA-2 Family: %SHA256%, %SHA256CNG%, %SHA384%, %SHA384CNG%, %SHA512%, %SHA512CNG% SHA-3 Family: %SHA3%, %SHA3_224%, %SHA3_256%, %SHA3_384%, %SHA3_512% Blake family: %BLAKE2B%, %BLAKE2B160%, %BLAKE2B256% Tiger family: %TIGER128%, %TIGER160%, %TIGER192% (using 0x01 padding) %TIGER2_128%, %TIGER2_160%, %TIGER2_192% (using 0x80 padding) %TIGER4_128%, %TIGER4_160%, %TIGER4_192% (tiger1 with 32 rounds) %WHIRLPOOL% Shorthand replacements: %.md5%, %.sfv%, %.sha1%, %.sha256%, or %.blake2b% will be replaced with formats matching their respective file types, including file names and newlines. Only the hashes specified in the format string will be calculated. The default format is: "%FILENAME% %MD5%n"
Arguments are processed left to right. The subdirectory flag and the output format string can be added as many times as desired to change the processing of files/directories to their right.