{"id":48540629,"url":"https://github.com/ndxdeveloper/slashsum","last_synced_at":"2026-04-08T04:02:49.723Z","repository":{"id":287565179,"uuid":"965124339","full_name":"NDXDeveloper/slashsum","owner":"NDXDeveloper","description":"Fast multi-threaded checksum calculator (CRC32, MD5, SHA1, SHA256, SHA512)","archived":false,"fork":false,"pushed_at":"2026-01-11T15:39:36.000Z","size":2967,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-11T16:41:39.995Z","etag":null,"topics":["checksum","cli-tool","concurrent-processing","crc32","cross-platform","cryptography","data-integrity","file-integrity","file-validation","file-verification","hash-calculator","md5","multi-threaded","parallel-computing","performance","rust","sha1","sha256","sha512","utility"],"latest_commit_sha":null,"homepage":"https://snapcraft.io/slashsum","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NDXDeveloper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-12T13:17:23.000Z","updated_at":"2026-01-11T15:39:40.000Z","dependencies_parsed_at":"2025-07-13T17:34:47.563Z","dependency_job_id":null,"html_url":"https://github.com/NDXDeveloper/slashsum","commit_stats":null,"previous_names":["ndxdeveloper/slashsum"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/NDXDeveloper/slashsum","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2Fslashsum","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2Fslashsum/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2Fslashsum/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2Fslashsum/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NDXDeveloper","download_url":"https://codeload.github.com/NDXDeveloper/slashsum/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2Fslashsum/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31539230,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["checksum","cli-tool","concurrent-processing","crc32","cross-platform","cryptography","data-integrity","file-integrity","file-validation","file-verification","hash-calculator","md5","multi-threaded","parallel-computing","performance","rust","sha1","sha256","sha512","utility"],"created_at":"2026-04-08T04:02:39.946Z","updated_at":"2026-04-08T04:02:49.714Z","avatar_url":"https://github.com/NDXDeveloper.png","language":"Rust","readme":"# Slashsum 🔍\n\n**Multi-threaded file checksum calculator**\n\n[![CI Build](https://github.com/NDXDeveloper/slashsum/actions/workflows/ci.yml/badge.svg)](https://github.com/NDXDeveloper/slashsum/actions/workflows/ci.yml)\n[![GitHub Release](https://img.shields.io/github/v/release/NDXDeveloper/slashsum)](https://github.com/NDXDeveloper/slashsum/releases)\n[![Snap Store](https://img.shields.io/badge/Snap%20Store-slashsum-blue?logo=snapcraft)](https://snapcraft.io/slashsum)\n[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20Windows%20%7C%20macOS-lightgrey)]()\n[![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)\n\n⚡ Calculate multiple file checksums simultaneously with blazing-fast performance using Rust's concurrency capabilities.\n\n---\n\n## 📑 Table of Contents\n\n- [🚀 Quick Start](#-quick-start)\n- [✨ Features](#-features)\n- [📸 Screenshot](#-screenshot)\n- [📦 Installation](#-installation)\n- [🛠️ Usage](#-usage)\n- [📈 Performance Benchmarks](#-performance-benchmarks)\n- [⚖️ Comparison with Alternatives](#-comparison-with-alternatives)\n- [🧠 How It Works](#-how-it-works)\n- [🔧 Technical Details](#-technical-details)\n- [❓ FAQ](#-faq)\n- [🗑️ Uninstall](#-uninstall)\n- [📚 Dependencies](#-dependencies)\n- [🤝 Contributing](#-contributing)\n- [📋 Changelog](#-changelog)\n- [👤 Author](#-author)\n- [📜 License](#-license)\n\n---\n\n## 🚀 Quick Start\n\n\u003ca href=\"https://snapcraft.io/slashsum\"\u003e\n  \u003cimg alt=\"Get it from the Snap Store\" src=\"https://snapcraft.io/en/dark/install.svg\" /\u003e\n\u003c/a\u003e\n\n```bash\n# Linux (Snap Store - recommended)\nsudo snap install slashsum\n\n# Linux (Debian/Ubuntu)\nsudo apt install ./slashsum_v*_amd64.deb\n\n# Windows (download installer from releases page)\n# Run slashsum-setup-user-v*.exe\n\n# Calculate checksums\nslashsum myfile.iso\n\n# Save results to file\nslashsum myfile.iso --save\n```\n\n---\n\n## ✨ Features\n\n- ⚡ **Parallel computation** of 5 hash algorithms simultaneously\n- 📊 **Supported algorithms**:\n  - CRC32 (IEEE 802.3)\n  - MD5\n  - SHA-1\n  - SHA-256\n  - SHA-512\n- 📁 **Large file support** (\u003e10GB tested)\n- 💾 **Save results** to `.checksum` files\n- ⏱️ **Execution time metrics**\n- 🖥️ **Cross-platform** (Windows/Linux/macOS)\n- 🎯 **Zero configuration** - works out of the box\n- 🪶 **Lightweight** - single binary, no dependencies\n\n---\n\n## 📸 Screenshot\n\n![Slashsum terminal output](store-assets/screenshots/slashsum-terminal.png)\n\n---\n\n## 📦 Installation\n\n### Option 1: Linux (Snap Store) - Recommended ⭐\n\n\u003ca href=\"https://snapcraft.io/slashsum\"\u003e\n  \u003cimg alt=\"Get it from the Snap Store\" src=\"https://snapcraft.io/en/dark/install.svg\" /\u003e\n\u003c/a\u003e\n\n```bash\nsudo snap install slashsum\n```\n\n🔄 Auto-updates enabled. [View on Snap Store](https://snapcraft.io/slashsum)\n\n### Option 2: 🐧 Linux (Portable)\n\nDownload the portable package from the [releases page](https://github.com/NDXDeveloper/slashsum/releases):\n\n```bash\ntar -xzvf slashsum-linux-amd64-portable.tar.gz\ncd slashsum-linux-amd64-portable\nsudo ./install.sh\n```\n\n### Option 3: 🐧 Linux (DEB - Debian/Ubuntu/Linux Mint)\n\nDownload the `.deb` file from the [releases page](https://github.com/NDXDeveloper/slashsum/releases):\n\n```bash\nsudo apt install ./slashsum_\u003cversion\u003e_amd64.deb\n```\n\n### Option 4: 🐧 Linux (Snap from GitHub Release)\n\n```bash\nsudo snap install --dangerous slashsum_\u003cversion\u003e_amd64.snap\n```\n\n### Option 5: 🪟 Windows (Installer) - Recommended ⭐\n\nDownload the installer from the [releases page](https://github.com/NDXDeveloper/slashsum/releases):\n\n| Installer | Description | Admin Required |\n|-----------|-------------|----------------|\n| `slashsum-setup-user-\u003cversion\u003e.exe` | 👤 Current user only | No |\n| `slashsum-setup-admin-\u003cversion\u003e.exe` | 🔐 System-wide | Yes |\n\n### Option 6: 🪟 Windows (Portable)\n\nDownload `slashsum-windows-amd64-portable.zip` from the [releases page](https://github.com/NDXDeveloper/slashsum/releases):\n\n```powershell\nExpand-Archive slashsum-windows-amd64-portable.zip -DestinationPath .\ncd slashsum-windows-amd64-portable\n.\\install.bat\n```\n\n### Option 7: 🍎 macOS (Portable)\n\nDownload the portable package from the [releases page](https://github.com/NDXDeveloper/slashsum/releases):\n\n```bash\ntar -xzvf slashsum-darwin-amd64-portable.tar.gz\ncd slashsum-darwin-amd64-portable\nsudo ./install.sh\n```\n\n### Option 8: 🔨 Build from source\n\n**Prerequisites**: [Rust toolchain](https://rustup.rs) (1.70+)\n\n```bash\ngit clone https://github.com/NDXDeveloper/slashsum\ncd slashsum\ncargo build --release\n```\n\nThe binary will be available at `target/release/slashsum`.\n\n---\n\n## 🛠️ Usage\n\n### Basic Syntax\n\n```bash\nslashsum \u003cFILE\u003e [OPTIONS]\n```\n\n### Options\n\n| Option | Description |\n|--------|-------------|\n| `--save` | Save checksums to a `.checksum` file |\n| `-h`, `--help` | Print help information |\n| `--version` | Print version and license information |\n\n### Examples\n\n```bash\n# Calculate checksums for a file\nslashsum document.pdf\n\n# Calculate and save results\nslashsum large_file.iso --save\n# Creates: large_file.iso.checksum\n\n# Display help\nslashsum --help\n\n# Display version and license\nslashsum --version\n\n# Process multiple files (shell loop)\nfor f in *.iso; do slashsum \"$f\" --save; done\n```\n\n### Output Format\n\n```\nFile:     large_file.iso\nSize:     4.68 GB (5033165312 bytes)\nCRC32:    8d7be4e9\nMD5:      a3b9d148c5f8d237f735a5d9795a2345\nSHA1:     2aae6c35c94fcfb415dbe95f408b9ce91ee846ed\nSHA256:   b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9\nSHA512:   309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f\nTime:     12.45s\n```\n\n---\n\n## 📈 Performance Benchmarks\n\n### 🖥️ Test Environment\n\n- **CPU**: AWS EC2 t2.xlarge (4 vCPUs)\n- **RAM**: 16GB\n- **Storage**: EBS SSD (gp3)\n- **OS**: Ubuntu 22.04 LTS\n\n### 📊 Results\n\n| File Size | Slashsum | sha256sum | md5sum | Improvement |\n|-----------|----------|-----------|--------|-------------|\n| 100 MB    | 0.45s    | 0.28s     | 0.15s  | 5 hashes in ~1x time |\n| 1 GB      | 2.34s    | 2.10s     | 1.20s  | 5 hashes in ~1x time |\n| 10 GB     | 25.12s   | 22.50s    | 12.80s | 5 hashes in ~1x time |\n| 50 GB     | 128.70s  | 115.00s   | 65.00s | 5 hashes in ~1x time |\n\n\u003e 💡 **Key insight**: Slashsum calculates **5 different checksums** in approximately the same time it takes traditional tools to calculate just **1 checksum**. This is because the bottleneck is disk I/O, not CPU.\n\n### 🚀 Throughput\n\n| Storage Type | Read Speed | Slashsum Throughput |\n|--------------|------------|---------------------|\n| HDD (7200rpm)| ~150 MB/s  | ~150 MB/s          |\n| SSD (SATA)   | ~550 MB/s  | ~500 MB/s          |\n| NVMe SSD     | ~3500 MB/s | ~2000 MB/s         |\n\n---\n\n## ⚖️ Comparison with Alternatives\n\n| Feature | Slashsum | sha256sum | md5sum | hashdeep |\n|---------|----------|-----------|--------|----------|\n| CRC32 | Yes | No | No | No |\n| MD5 | Yes | No | Yes | Yes |\n| SHA-1 | Yes | No | No | Yes |\n| SHA-256 | Yes | Yes | No | Yes |\n| SHA-512 | Yes | No | No | No |\n| **All 5 at once** | **Yes** | No | No | No |\n| Parallel processing | Yes | No | No | Yes |\n| Single binary | Yes | Yes | Yes | Yes |\n| Cross-platform | Yes | Linux/macOS | Linux/macOS | Yes |\n| Progress indicator | No | No | No | Yes |\n| Recursive scan | No | No | No | Yes |\n\n### ✅ When to use Slashsum\n\n- You need **multiple checksums** for the same file\n- You want to **verify file integrity** with redundancy\n- You're creating **release artifacts** that need multiple hashes\n- You want **one command** instead of running 5 tools\n\n### ⚠️ When to use alternatives\n\n- You only need **one specific hash**\n- You need to **recursively scan directories** (use `hashdeep`)\n- You need a **progress bar** for very large files\n\n---\n\n## 🧠 How It Works\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                         SLASHSUM                                │\n├─────────────────────────────────────────────────────────────────┤\n│                                                                 │\n│   ┌─────────┐    ┌──────────────┐     ┌─────────────────────┐   │\n│   │  File   │───\u003e│   Reader     │────\u003e│  Crossbeam Channel  │   │\n│   │ (disk)  │    │ (1MB chunks) │     │   (broadcaster)     │   │\n│   └─────────┘    └──────────────┘     └──────────┬──────────┘   │\n│                                                  │              │\n│                    ┌─────────────────────────────┼───────┐      │\n│                    │                             │       │      │\n│                    v                             v       v      │\n│              ┌──────────┐  ┌──────────┐  ┌──────────┐   ...     │\n│              │  CRC32   │  │   MD5    │  │  SHA-1   │           │\n│              │ (thread) │  │ (thread) │  │ (thread) │           │\n│              └────┬─────┘  └────┬─────┘  └────┬─────┘           │\n│                   │             │             │                 │\n│                   v             v             v                 │\n│              ┌─────────────────────────────────────────────┐    │\n│              │            Result Aggregator                │    │\n│              └─────────────────────────────────────────────┘    │\n│                                    │                            │\n│                                    v                            │\n│                             ┌────────────┐                      │\n│                             │   Output   │                      │\n│                             └────────────┘                      │\n│                                                                 │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n### ⚙️ Processing Steps\n\n1. 📖 **File Reading**: Buffered reading in 1MB chunks for optimal I/O\n2. 📡 **Data Distribution**: Uses crossbeam channels to broadcast chunks to all hash workers\n3. ⚡ **Parallel Processing**: Dedicated thread for each hash algorithm (5 threads)\n4. 🔗 **Result Aggregation**: Waits for all threads to complete and collects results\n5. 📝 **Output Formatting**: Human-readable sizes and standardized hash formats\n\n### 🤔 Why 1MB chunks?\n\n- ❌ **Too small** (4KB): High overhead from channel operations\n- ❌ **Too large** (100MB): High memory usage, cache misses\n- ✅ **1MB**: Sweet spot balancing throughput and memory efficiency\n\n---\n\n## 🔧 Technical Details\n\n| Property | Value |\n|----------|-------|\n| **Binary size** | ~650 KB (Linux), ~700 KB (Windows) |\n| **Memory usage** | ~10-15 MB (5 threads × 1MB buffer + overhead) |\n| **Rust version** | 1.70+ (stable) |\n| **Architecture** | x86_64 only |\n| **Dependencies** | None (static binary) |\n| **Threads** | 5 (one per hash algorithm) + 1 (file reader) |\n| **Buffer size** | 1 MB per chunk |\n| **Channel capacity** | 1024 chunks |\n\n### 🖥️ Supported Platforms\n\n| Platform | Architecture | Format |\n|----------|--------------|--------|\n| 🐧 Linux | x86_64 | Binary, DEB, Snap, tar.gz |\n| 🪟 Windows | x86_64 | EXE installer, ZIP portable |\n| 🍎 macOS | x86_64 | tar.gz portable |\n\n---\n\n## ❓ FAQ\n\n### 🤔 Why calculate 5 checksums instead of just one?\n\nDifferent use cases require different algorithms:\n- **CRC32**: Fast error detection, used in ZIP files\n- **MD5**: Legacy compatibility, still widely used\n- **SHA-1**: Git commits, some package managers\n- **SHA-256**: Modern standard, security applications\n- **SHA-512**: Maximum security, large file verification\n\nHaving all 5 ready saves time when you need to publish or verify files.\n\n### 🚀 Why is Slashsum not much slower than single-hash tools?\n\nDisk I/O is the bottleneck, not CPU. While reading the file once, all 5 hash algorithms process the data in parallel. The overhead of parallel processing is minimal compared to disk read time.\n\n### 🎛️ Can I choose which algorithms to calculate?\n\nNot currently. Slashsum always calculates all 5 checksums. This keeps the tool simple and ensures consistent output. Future versions may add algorithm selection.\n\n### ✅ Does Slashsum verify checksums?\n\nNot yet. Currently, Slashsum only calculates checksums. Verification mode (`--verify`) may be added in future versions.\n\n### 💻 Why x86_64 only?\n\nCross-compilation for ARM and other architectures is planned but not yet implemented. You can build from source for other architectures if you have Rust installed.\n\n### 🔒 Is it safe to use MD5/SHA-1?\n\nFor **file integrity** (detecting accidental corruption): ✅ Yes, they're fine.\nFor **security** (detecting tampering): ⚠️ Use SHA-256 or SHA-512.\n\nSlashsum provides both, so you can use the appropriate one for your needs.\n\n---\n\n## 🗑️ Uninstall\n\n### 🐧 Linux (Snap)\n\n```bash\nsudo snap remove slashsum\n```\n\n### 🐧 Linux (DEB)\n\n```bash\nsudo apt remove slashsum\n```\n\n### 🐧🍎 Linux/macOS (Portable)\n\n```bash\n# Using uninstall script\nsudo ./uninstall.sh\n\n# Or manually\nsudo rm /usr/local/bin/slashsum\n```\n\n### 🪟 Windows (Installer)\n\n- **Settings** \u003e **Apps** \u003e **Slashsum** \u003e **Uninstall**\n- Or: **Control Panel** \u003e **Programs** \u003e **Uninstall**\n\n### 🪟 Windows (Portable)\n\n```powershell\n# Using uninstall script\n.\\uninstall.bat\n\n# Or manually delete from your PATH folder\n```\n\n---\n\n## 📚 Dependencies\n\n- [crossbeam-channel](https://docs.rs/crossbeam-channel) - High-performance multi-producer multi-consumer channels\n- [RustCrypto Hashes](https://github.com/RustCrypto/hashes) - Pure Rust cryptographic hash implementations\n- [crc](https://docs.rs/crc) - CRC32 calculation (IEEE 802.3 polynomial)\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please read our guidelines before submitting.\n\n- [CONTRIBUTING.md](CONTRIBUTING.md) - Contribution guidelines\n- [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) - Code of conduct\n\n### How to contribute\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n---\n\n## 📋 Changelog\n\nSee [Releases](https://github.com/NDXDeveloper/slashsum/releases) for version history and release notes.\n\n---\n\n## 👤 Author\n\n**Nicolas DEOUX**\n\n- Email: [NDXDev@gmail.com](mailto:NDXDev@gmail.com)\n- LinkedIn: [nicolas-deoux](https://www.linkedin.com/in/nicolas-deoux-ab295980/)\n- GitHub: [NDXDeveloper](https://github.com/NDXDeveloper)\n\n---\n\n## 📜 License\n\nMIT License - See [LICENSE](LICENSE) for details.\n\n```\nCopyright (c) 2025-2026 Nicolas DEOUX\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software...\n```\n\n---\n\n**Why \"Slashsum\"?** Combination of \"slash\" (/) for file paths and \"checksum\" - because every good tool needs a catchy name!\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Happy hashing!**\n\n[![Star on GitHub](https://img.shields.io/github/stars/NDXDeveloper/slashsum?style=social)](https://github.com/NDXDeveloper/slashsum)\n\n*If you find this useful, a star is always appreciated.*\n\n\u003c/div\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndxdeveloper%2Fslashsum","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fndxdeveloper%2Fslashsum","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndxdeveloper%2Fslashsum/lists"}