From ed028f4cd3696e225d4bc36a05196278bf806499 Mon Sep 17 00:00:00 2001 From: "Doug Cook (WINDOWS)" Date: Fri, 6 Mar 2026 11:36:25 -0800 Subject: [PATCH 1/6] README changes iteration 1 --- README.md | 98 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 8da1d6a..730b6f2 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,65 @@ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Build](https://github.com/idigdoug/CheckSums/actions/workflows/release.yml/badge.svg)](https://github.com/idigdoug/CheckSums/actions/workflows/release.yml) # CheckSums -Create or validate file checksums on Windows. -Works a lot like `md5sum` and `sha256sum` but with a few extra features: +A fast, lightweight Windows command-line tool for computing and validating file checksums. +Works a lot like `md5sum` and `sha256sum` but with a few extra features. +## Table of Contents + +- [Features](#features) +- [Installation](#installation) +- [Quick Start](#quick-start) +- [Recursion](#recursion) +- [Output File](#output-file) +- [Checksum Algorithms](#checksum-algorithms) +- [Examples](#examples) +- [Full Usage](#full-usage) +- [License](#license) + +## Features + +- Supports many checksum algorithms (MD5, SHA256, CRC32, and more). - Can optionally recurse into subdirectories. - Can optionally write results to a file instead of stdout. - Can optionally encode output file as UTF-8 with BOM. -- Supports many different checksum algorithms (see below). + +## Installation + +### Download + +Download the latest prebuilt binary from the +[Releases](https://github.com/idigdoug/CheckSums/releases) page. + +### Build from Source + +Requirements: Visual Studio 2022 with the C++ Desktop workload (C++20). + +1. Clone the repository: `git clone https://github.com/idigdoug/CheckSums.git` +2. Open `CheckSums.sln` in Visual Studio. +3. Build the solution (Release, x64). + +## Quick Start + +``` +# Compute SHA256 checksums for all files in the current directory +CheckSums -a SHA256 * + +# Compute MD5 checksums for all .txt files in the "Files" directory and subdirectories +CheckSums -a MD5 -r Files\*.txt + +# Validate checksums in a file against the corresponding files +CheckSums -c ..\checksums.md5 +``` ## Recursion When computing checksums, this tool accepts FileSpecs that specify the files to be processed. The FileSpec is split into a (potentially empty) directory part and a -filename pattern part. The filename pattern may contain wildcards '*' and '?'. +filename pattern part. The filename pattern may contain wildcards `*` and `?`. -Example: `CheckSums Files\*.txt` will compute checksums for all ".txt" files the +Example: `CheckSums Files\*.txt` will compute checksums for all ".txt" files in the "Files" directory. Normally, the filename pattern is evaluated only in the directory specified by the @@ -24,10 +67,10 @@ directory part. However, if the `-r` or `--recurse` option is given, the filenam pattern will be evaluated in every directory at or below the directory specified by the directory part. -Example: `CheckSums -r Files\*.txt` will compute checksums for all ".txt" files the +Example: `CheckSums -r Files\*.txt` will compute checksums for all ".txt" files in the "Files" directory and its subdirectories. -## Output file +## Output File By default, this tool writes results to standard output. However, you can specify an output file using the `-o` or `--out` option. @@ -38,28 +81,31 @@ When using `-o` or `--out`, you can save the results as UTF-8 using the `--utf8b option. You can append to the output file instead of overwriting it using the `--append` option. -## Checksum algorithms +## Checksum Algorithms This tool supports the following algorithms: -- Adler32 -- Crc32 -- Fnv1a32 -- Fnv1a64 -- MD4 -- MD5 -- Murmur3x64_128 -- SHA1 -- SHA256 -- SHA384 -- SHA512 -- Xor64 - -The default algorithm is Murmur3x64_128. This is not a cryptographic checksum algorithm, but it -is very fast and has good distribution properties. It is suitable for detecting changes to files. - -For security-sensitive applications, you should select a cryptographic hash algorithm such as SHA256 -or SHA512 using the `-a` option. +| Algorithm | Benchmark (lower = faster) | +|-----------------|----------------------------| +| Adler32 | 131 | +| Crc32 | 779 | +| Fnv1a32 | 442 | +| Fnv1a64 | 425 | +| MD4 | 450 | +| MD5 | 759 | +| Murmur3x64_128 | 68 *(default)* | +| SHA1 | 575 | +| SHA256 | 232 | +| SHA384 | 695 | +| SHA512 | 685 | +| Xor64 | 23 | + +The default algorithm is **Murmur3x64_128**. This is not a cryptographic hash, but it +is very fast and has good distribution properties. It is suitable for detecting changes +to files. + +For security-sensitive applications, use a cryptographic hash algorithm such as SHA256 +or SHA512 via the `-a` option. ## Examples From 0a901690f97bced67df67264189ba38d4db664c7 Mon Sep 17 00:00:00 2001 From: "Doug Cook (WINDOWS)" Date: Fri, 6 Mar 2026 11:40:49 -0800 Subject: [PATCH 2/6] README iteration 2 --- CheckSums.sln | 1 + README.md | 83 +++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 68 insertions(+), 16 deletions(-) diff --git a/CheckSums.sln b/CheckSums.sln index db70793..9fbe3d9 100644 --- a/CheckSums.sln +++ b/CheckSums.sln @@ -12,6 +12,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8EC462FD-D22E-90A8-E5CE-7E832BA40C5D}" ProjectSection(SolutionItems) = preProject .github\workflows\build-and-test.yml = .github\workflows\build-and-test.yml + README.md = README.md .github\workflows\release.yml = .github\workflows\release.yml EndProjectSection EndProject diff --git a/README.md b/README.md index 730b6f2..7aa654e 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,16 @@ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Build](https://github.com/idigdoug/CheckSums/actions/workflows/release.yml/badge.svg)](https://github.com/idigdoug/CheckSums/actions/workflows/release.yml) +[![GitHub Release](https://img.shields.io/github/v/release/idigdoug/CheckSums)](https://github.com/idigdoug/CheckSums/releases) # CheckSums -A fast, lightweight Windows command-line tool for computing and validating file checksums. +> A fast, lightweight, native Windows command-line tool for computing and validating file checksums — no WSL or Cygwin required. + Works a lot like `md5sum` and `sha256sum` but with a few extra features. ## Table of Contents +- [Why CheckSums?](#why-checksums) - [Features](#features) - [Installation](#installation) - [Quick Start](#quick-start) @@ -15,9 +18,41 @@ Works a lot like `md5sum` and `sha256sum` but with a few extra features. - [Output File](#output-file) - [Checksum Algorithms](#checksum-algorithms) - [Examples](#examples) -- [Full Usage](#full-usage) +- [Usage](#usage) +- [Contributing](#contributing) - [License](#license) +## Why CheckSums? + +If you need a checksum tool on Windows, you typically have to install Cygwin, use WSL, +or rely on PowerShell cmdlets. **CheckSums** is a single, native Windows binary that: + +- **Runs natively on Windows** — no extra runtimes, no WSL, no Cygwin. +- **Supports 12 algorithms** in a single tool, from fast non-cryptographic hashes + ([Murmur3](https://en.wikipedia.org/wiki/MurmurHash), + [FNV-1a](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function)) + to cryptographic standards + ([SHA-256](https://en.wikipedia.org/wiki/SHA-2), + [SHA-512](https://en.wikipedia.org/wiki/SHA-2)). +- **Recurses into subdirectories** with familiar wildcard patterns. +- **Handles Unicode filenames** correctly, with optional UTF-8 BOM output. +- **Is extremely fast** — the default Murmur3x64_128 algorithm is ~10× faster than + SHA-256 on typical workloads. + +### Sample Output + +``` +> CheckSums -a SHA256 -r *.cs + +SHA256 Programs\Main.cs +SHA256 Programs\Utils.cs +SHA256 Libraries\Lib.cs + +> CheckSums -a MD5 -c ..\checksums.md5 + +MD5 (stdin)= d41d8cd98f00b204e9800998ecf8427e +``` + ## Features - Supports many checksum algorithms (MD5, SHA256, CRC32, and more). @@ -27,6 +62,11 @@ Works a lot like `md5sum` and `sha256sum` but with a few extra features. ## Installation +### Requirements + +- **Windows 10** or later (x64). +- No additional runtime dependencies — the binary is statically linked. + ### Download Download the latest prebuilt binary from the @@ -85,20 +125,23 @@ option. You can append to the output file instead of overwriting it using the This tool supports the following algorithms: -| Algorithm | Benchmark (lower = faster) | -|-----------------|----------------------------| -| Adler32 | 131 | -| Crc32 | 779 | -| Fnv1a32 | 442 | -| Fnv1a64 | 425 | -| MD4 | 450 | -| MD5 | 759 | -| Murmur3x64_128 | 68 *(default)* | -| SHA1 | 575 | -| SHA256 | 232 | -| SHA384 | 695 | -| SHA512 | 685 | -| Xor64 | 23 | +| Algorithm | Type | Benchmark (relative time, lower = faster) | +|-----------|------|-------------------------------------------| +| [Adler32](https://en.wikipedia.org/wiki/Adler-32) | Non-cryptographic | 131 | +| [Crc32](https://en.wikipedia.org/wiki/Cyclic_redundancy_check) | Non-cryptographic | 779 | +| [Fnv1a32](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) | Non-cryptographic | 442 | +| [Fnv1a64](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) | Non-cryptographic | 425 | +| [MD4](https://en.wikipedia.org/wiki/MD4) | Cryptographic (weak) | 450 | +| [MD5](https://en.wikipedia.org/wiki/MD5) | Cryptographic (weak) | 759 | +| [Murmur3x64_128](https://en.wikipedia.org/wiki/MurmurHash) | Non-cryptographic | 68 *(default)* | +| [SHA1](https://en.wikipedia.org/wiki/SHA-1) | Cryptographic (weak) | 575 | +| [SHA256](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 232 | +| [SHA384](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 685 | +| [SHA512](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 695 | +| [Xor64](https://en.wikipedia.org/wiki/XOR_cipher) | Non-cryptographic | 23 | + +> **Note:** Benchmark values are relative times measured on a single machine. They are +> useful for comparing algorithms to each other, not as absolute performance numbers. The default algorithm is **Murmur3x64_128**. This is not a cryptographic hash, but it is very fast and has good distribution properties. It is suitable for detecting changes @@ -130,6 +173,7 @@ relative to `c:\MyDir`. This will validate the checksums in `MyDir.sha256` against the files in `c:\MyDir\...`. + ## Usage ``` @@ -222,6 +266,13 @@ Checksum algorithm options, along with a benchmark time (smaller is faster): -a Xor64 23 ``` +## Contributing + +Contributions are welcome! Please +[open an issue](https://github.com/idigdoug/CheckSums/issues) to report bugs or +suggest features, or submit a +[pull request](https://github.com/idigdoug/CheckSums/pulls). + ## License Copyright (c) Doug Cook. From 0924eae3e3e8b919f497206315bc4bee58eb3c79 Mon Sep 17 00:00:00 2001 From: "Doug Cook (WINDOWS)" Date: Fri, 6 Mar 2026 12:08:04 -0800 Subject: [PATCH 3/6] Fix hallucinations --- README.md | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 7aa654e..1a93592 100644 --- a/README.md +++ b/README.md @@ -30,27 +30,35 @@ or rely on PowerShell cmdlets. **CheckSums** is a single, native Windows binary - **Runs natively on Windows** — no extra runtimes, no WSL, no Cygwin. - **Supports 12 algorithms** in a single tool, from fast non-cryptographic hashes ([Murmur3](https://en.wikipedia.org/wiki/MurmurHash), - [FNV-1a](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function)) + [Adler-32](https://en.wikipedia.org/wiki/Adler-32)) to cryptographic standards ([SHA-256](https://en.wikipedia.org/wiki/SHA-2), [SHA-512](https://en.wikipedia.org/wiki/SHA-2)). - **Recurses into subdirectories** with familiar wildcard patterns. - **Handles Unicode filenames** correctly, with optional UTF-8 BOM output. - **Is extremely fast** — the default Murmur3x64_128 algorithm is ~10× faster than - SHA-256 on typical workloads. + MD5 on typical workloads. ### Sample Output ``` -> CheckSums -a SHA256 -r *.cs - -SHA256 Programs\Main.cs -SHA256 Programs\Utils.cs -SHA256 Libraries\Lib.cs - -> CheckSums -a MD5 -c ..\checksums.md5 - -MD5 (stdin)= d41d8cd98f00b204e9800998ecf8427e +> CheckSums.exe -a crc32 -r pch.* +d61765c7 exe\pch.cpp +e208b879 exe\pch.h +d61765c7 lib\pch.cpp +e208b879 lib\pch.h +d61765c7 test\pch.cpp +1c913623 test\pch.h + +> CheckSums.exe -a crc32 -r pch.* -o checksums.crc32 + +> CheckSums.exe -a crc32 -c checksums.crc32 +d61765c7 exe\pch.cpp* OK +e208b879 exe\pch.h* OK +d61765c7 lib\pch.cpp* OK +e208b879 lib\pch.h* OK +d61765c7 test\pch.cpp* OK +1c913623 test\pch.h* OK ``` ## Features @@ -90,7 +98,7 @@ CheckSums -a SHA256 * CheckSums -a MD5 -r Files\*.txt # Validate checksums in a file against the corresponding files -CheckSums -c ..\checksums.md5 +CheckSums -a MD5 -c ..\checksums.md5 ``` ## Recursion From eb3415d069ff6a48456886f360b304d43ba51bb4 Mon Sep 17 00:00:00 2001 From: "Doug Cook (WINDOWS)" Date: Fri, 6 Mar 2026 12:24:14 -0800 Subject: [PATCH 4/6] README tweaks --- README.md | 58 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 1a93592..4d0d463 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,18 @@ # CheckSums -> A fast, lightweight, native Windows command-line tool for computing and validating file checksums — no WSL or Cygwin required. +> A fast, lightweight, native Windows command-line tool for computing and validating file checksums. -Works a lot like `md5sum` and `sha256sum` but with a few extra features. +Works a lot like `md5sum` and `sha256sum` but with extra features including directory recursion, +multiple checksum algorithms, and optional UTF-8 output. ## Table of Contents - [Why CheckSums?](#why-checksums) -- [Features](#features) - [Installation](#installation) - [Quick Start](#quick-start) - [Recursion](#recursion) +- [Base Directory](#base-directory) - [Output File](#output-file) - [Checksum Algorithms](#checksum-algorithms) - [Examples](#examples) @@ -24,8 +25,7 @@ Works a lot like `md5sum` and `sha256sum` but with a few extra features. ## Why CheckSums? -If you need a checksum tool on Windows, you typically have to install Cygwin, use WSL, -or rely on PowerShell cmdlets. **CheckSums** is a single, native Windows binary that: +**CheckSums** is a native Windows binary that: - **Runs natively on Windows** — no extra runtimes, no WSL, no Cygwin. - **Supports 12 algorithms** in a single tool, from fast non-cryptographic hashes @@ -35,8 +35,8 @@ or rely on PowerShell cmdlets. **CheckSums** is a single, native Windows binary ([SHA-256](https://en.wikipedia.org/wiki/SHA-2), [SHA-512](https://en.wikipedia.org/wiki/SHA-2)). - **Recurses into subdirectories** with familiar wildcard patterns. -- **Handles Unicode filenames** correctly, with optional UTF-8 BOM output. -- **Is extremely fast** — the default Murmur3x64_128 algorithm is ~10× faster than +- **Handles Unicode filenames** correctly with optional UTF-8 BOM output. +- **Is extremely fast** — the default Murmur3x64_128 algorithm is ~11× faster than MD5 on typical workloads. ### Sample Output @@ -61,18 +61,11 @@ d61765c7 test\pch.cpp* OK 1c913623 test\pch.h* OK ``` -## Features - -- Supports many checksum algorithms (MD5, SHA256, CRC32, and more). -- Can optionally recurse into subdirectories. -- Can optionally write results to a file instead of stdout. -- Can optionally encode output file as UTF-8 with BOM. - ## Installation ### Requirements -- **Windows 10** or later (x64). +- **Windows 10** or later (x86, x64, ARM64). - No additional runtime dependencies — the binary is statically linked. ### Download @@ -91,13 +84,13 @@ Requirements: Visual Studio 2022 with the C++ Desktop workload (C++20). ## Quick Start ``` -# Compute SHA256 checksums for all files in the current directory +# Compute SHA256 checksums for all files in the current directory: CheckSums -a SHA256 * -# Compute MD5 checksums for all .txt files in the "Files" directory and subdirectories -CheckSums -a MD5 -r Files\*.txt +# Record MD5 checksums for all .txt files in the "Files" directory and subdirectories: +CheckSums -a MD5 -r Files\*.txt > ..\checksums.md5 -# Validate checksums in a file against the corresponding files +# Validate recorded checksums against the corresponding files: CheckSums -a MD5 -c ..\checksums.md5 ``` @@ -118,6 +111,26 @@ the directory part. Example: `CheckSums -r Files\*.txt` will compute checksums for all ".txt" files in the "Files" directory and its subdirectories. +## Base Directory + +By default, files to be checksummed are located relative to the current directory. +You can specify a different base directory using the `-d` or `--dir` option. The +output will list file paths relative to the base directory. + +Setting the base directory is not the same as specifying the directory in the FileSpec. +Directory components in the FileSpec are included in the output, while the base directory +is not. For example: + +``` +> CheckSums E:\repos\CheckSums\exe\pch.cpp +b2e755768937966436f669ad8e4411ce E:\repos\CheckSums\exe\pch.cpp + +> CheckSums -d E:\repos\CheckSums exe\pch.cpp +b2e755768937966436f669ad8e4411ce exe\pch.cpp +``` + +The base directory is used when computing checksums and when validating checksums. + ## Output File By default, this tool writes results to standard output. However, you can specify an @@ -156,7 +169,11 @@ is very fast and has good distribution properties. It is suitable for detecting to files. For security-sensitive applications, use a cryptographic hash algorithm such as SHA256 -or SHA512 via the `-a` option. +or SHA512, e.g. `-a sha256`. + +> **Note:** The Xor64 algorithm is extremely fast but is very weak. It is not recommended +> for general use but may be useful for benchmarking, i.e. for measuring I/O overhead +> against time spent computing the actual checksum. ## Examples @@ -181,7 +198,6 @@ relative to `c:\MyDir`. This will validate the checksums in `MyDir.sha256` against the files in `c:\MyDir\...`. - ## Usage ``` From e2f0aaa306b87adde89ece790b0f15e3f15bf18a Mon Sep 17 00:00:00 2001 From: "Doug Cook (WINDOWS)" Date: Fri, 6 Mar 2026 12:36:10 -0800 Subject: [PATCH 5/6] Formatting --- README.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 4d0d463..d906303 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Build](https://github.com/idigdoug/CheckSums/actions/workflows/release.yml/badge.svg)](https://github.com/idigdoug/CheckSums/actions/workflows/release.yml) [![GitHub Release](https://img.shields.io/github/v/release/idigdoug/CheckSums)](https://github.com/idigdoug/CheckSums/releases) # CheckSums -> A fast, lightweight, native Windows command-line tool for computing and validating file checksums. +A fast, lightweight, native Windows command-line tool for computing and validating file checksums. Works a lot like `md5sum` and `sha256sum` but with extra features including directory recursion, multiple checksum algorithms, and optional UTF-8 output. @@ -27,7 +27,7 @@ multiple checksum algorithms, and optional UTF-8 output. **CheckSums** is a native Windows binary that: -- **Runs natively on Windows** — no extra runtimes, no WSL, no Cygwin. +- **Runs natively on Windows** - no extra runtimes, no WSL, no Cygwin. - **Supports 12 algorithms** in a single tool, from fast non-cryptographic hashes ([Murmur3](https://en.wikipedia.org/wiki/MurmurHash), [Adler-32](https://en.wikipedia.org/wiki/Adler-32)) @@ -36,7 +36,7 @@ multiple checksum algorithms, and optional UTF-8 output. [SHA-512](https://en.wikipedia.org/wiki/SHA-2)). - **Recurses into subdirectories** with familiar wildcard patterns. - **Handles Unicode filenames** correctly with optional UTF-8 BOM output. -- **Is extremely fast** — the default Murmur3x64_128 algorithm is ~11× faster than +- **Is extremely fast** - the default Murmur3x64_128 algorithm is ~11x faster than MD5 on typical workloads. ### Sample Output @@ -66,7 +66,7 @@ d61765c7 test\pch.cpp* OK ### Requirements - **Windows 10** or later (x86, x64, ARM64). -- No additional runtime dependencies — the binary is statically linked. +- No additional runtime dependencies - the binary is statically linked. ### Download @@ -146,20 +146,20 @@ option. You can append to the output file instead of overwriting it using the This tool supports the following algorithms: -| Algorithm | Type | Benchmark (relative time, lower = faster) | -|-----------|------|-------------------------------------------| -| [Adler32](https://en.wikipedia.org/wiki/Adler-32) | Non-cryptographic | 131 | -| [Crc32](https://en.wikipedia.org/wiki/Cyclic_redundancy_check) | Non-cryptographic | 779 | -| [Fnv1a32](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) | Non-cryptographic | 442 | -| [Fnv1a64](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) | Non-cryptographic | 425 | -| [MD4](https://en.wikipedia.org/wiki/MD4) | Cryptographic (weak) | 450 | -| [MD5](https://en.wikipedia.org/wiki/MD5) | Cryptographic (weak) | 759 | -| [Murmur3x64_128](https://en.wikipedia.org/wiki/MurmurHash) | Non-cryptographic | 68 *(default)* | -| [SHA1](https://en.wikipedia.org/wiki/SHA-1) | Cryptographic (weak) | 575 | -| [SHA256](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 232 | -| [SHA384](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 685 | -| [SHA512](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 695 | -| [Xor64](https://en.wikipedia.org/wiki/XOR_cipher) | Non-cryptographic | 23 | +| Algorithm | Type | Benchmark (relative time, lower = faster) | +| ------------------------------------------------------------------------------------- | -------------------- | ----------------------------------------- | +| [Adler32](https://en.wikipedia.org/wiki/Adler-32) | Non-cryptographic | 131 | +| [Crc32](https://en.wikipedia.org/wiki/Cyclic_redundancy_check) | Non-cryptographic | 779 | +| [Fnv1a32](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) | Non-cryptographic | 442 | +| [Fnv1a64](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function) | Non-cryptographic | 425 | +| [MD4](https://en.wikipedia.org/wiki/MD4) | Cryptographic (weak) | 450 | +| [MD5](https://en.wikipedia.org/wiki/MD5) | Cryptographic (weak) | 759 | +| [Murmur3x64_128](https://en.wikipedia.org/wiki/MurmurHash) | Non-cryptographic | 68 _(default)_ | +| [SHA1](https://en.wikipedia.org/wiki/SHA-1) | Cryptographic (weak) | 575 | +| [SHA256](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 232 | +| [SHA384](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 685 | +| [SHA512](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 695 | +| [Xor64](https://en.wikipedia.org/wiki/XOR_cipher) | Non-cryptographic | 23 | > **Note:** Benchmark values are relative times measured on a single machine. They are > useful for comparing algorithms to each other, not as absolute performance numbers. From 0126d62d9b9aacc8ea64bfa0c097e867e794d0a6 Mon Sep 17 00:00:00 2001 From: "Doug Cook (WINDOWS)" Date: Fri, 6 Mar 2026 12:47:58 -0800 Subject: [PATCH 6/6] PR Feedback --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index d906303..f9e9e72 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![Build](https://github.com/idigdoug/CheckSums/actions/workflows/release.yml/badge.svg)](https://github.com/idigdoug/CheckSums/actions/workflows/release.yml) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Build](https://github.com/idigdoug/CheckSums/actions/workflows/release.yml/badge.svg)](https://github.com/idigdoug/CheckSums/actions/workflows/build-and-test.yml) [![GitHub Release](https://img.shields.io/github/v/release/idigdoug/CheckSums)](https://github.com/idigdoug/CheckSums/releases) # CheckSums @@ -25,9 +25,9 @@ multiple checksum algorithms, and optional UTF-8 output. ## Why CheckSums? -**CheckSums** is a native Windows binary that: +**CheckSums** is a Windows tool that: -- **Runs natively on Windows** - no extra runtimes, no WSL, no Cygwin. +- **Runs natively on Windows** - no extra runtimes: no WSL, no Cygwin. - **Supports 12 algorithms** in a single tool, from fast non-cryptographic hashes ([Murmur3](https://en.wikipedia.org/wiki/MurmurHash), [Adler-32](https://en.wikipedia.org/wiki/Adler-32)) @@ -36,7 +36,7 @@ multiple checksum algorithms, and optional UTF-8 output. [SHA-512](https://en.wikipedia.org/wiki/SHA-2)). - **Recurses into subdirectories** with familiar wildcard patterns. - **Handles Unicode filenames** correctly with optional UTF-8 BOM output. -- **Is extremely fast** - the default Murmur3x64_128 algorithm is ~11x faster than +- **Fast** - the default Murmur3x64_128 algorithm is ~11x faster than MD5 on typical workloads. ### Sample Output @@ -106,7 +106,7 @@ Example: `CheckSums Files\*.txt` will compute checksums for all ".txt" files in Normally, the filename pattern is evaluated only in the directory specified by the directory part. However, if the `-r` or `--recurse` option is given, the filename pattern will be evaluated in every directory at or below the directory specified by -the directory part. +the directory part. This behavior is similar to the behavior of `dir /s /b FileSpec`. Example: `CheckSums -r Files\*.txt` will compute checksums for all ".txt" files in the "Files" directory and its subdirectories. @@ -157,8 +157,8 @@ This tool supports the following algorithms: | [Murmur3x64_128](https://en.wikipedia.org/wiki/MurmurHash) | Non-cryptographic | 68 _(default)_ | | [SHA1](https://en.wikipedia.org/wiki/SHA-1) | Cryptographic (weak) | 575 | | [SHA256](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 232 | -| [SHA384](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 685 | -| [SHA512](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 695 | +| [SHA384](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 695 | +| [SHA512](https://en.wikipedia.org/wiki/SHA-2) | Cryptographic | 685 | | [Xor64](https://en.wikipedia.org/wiki/XOR_cipher) | Non-cryptographic | 23 | > **Note:** Benchmark values are relative times measured on a single machine. They are