Un'applicazione CLI in Rust per calcolare hash SHA e altri algoritmi crittografici. Compatibile con strumenti standard come sha256sum, supporta input da stdin, file singoli e pattern glob.
- Algoritmi supportati: SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA3-224, SHA3-256, SHA3-384, SHA3-512, BLAKE2b-512, BLAKE2s-256
- Input flessibile: stdin, file singoli, pattern glob
- Modalità di verifica: verifica hash esistenti come
sha256sum -c - Output compatibile: formato identico a
sha256sum - Performance: gestione efficiente di file di grandi dimensioni
# Clona il repository
git clone <repository-url>
cd sha-calc
# Compila
cargo build --release
# Installa (opzionale)
cargo install --path .# Calcola SHA-256 da stdin
echo "hello world" | sha-calc
# Calcola hash di un file
sha-calc file.txt
# Usa un algoritmo diverso
sha-calc -a sha512 file.txt
# Output solo dell'hash (senza nome file)
sha-calc -q file.txt
# Calcola hash di più file
sha-calc file1.txt file2.txt file3.txt
# Usa pattern glob
sha-calc *.txt
sha-calc /path/to/files/*.logsha-calc -a sha1 file.txt # SHA-1 (legacy)
sha-calc -a sha224 file.txt # SHA-224
sha-calc -a sha256 file.txt # SHA-256 (default)
sha-calc -a sha384 file.txt # SHA-384
sha-calc -a sha512 file.txt # SHA-512
sha-calc -a sha3-256 file.txt # SHA3-256
sha-calc -a blake2b file.txt # BLAKE2b-512
sha-calc -a blake2s file.txt # BLAKE2s-256# Genera file di hash
sha-calc *.txt > checksums.sha256
# Verifica i file
sha-calc -c checksums.sha256
# Verifica silenziosa (mostra solo errori)
sha-calc -c -q checksums.sha256# Pipeline con altri comandi
find . -name "*.txt" -exec sha-calc {} \; > all_hashes.txt
# Confronto con sha256sum
sha256sum file.txt
sha-calc file.txt
# Output identico!
# Gestione di file grandi
sha-calc large_file.bin
# File binari
sha-calc /bin/lsUSAGE:
sha-calc [OPTIONS] [FILES]...
ARGUMENTS:
<FILES>... Input files or glob patterns
OPTIONS:
-a, --algorithm <ALGORITHM> Hash algorithm to use [default: sha256]
-c, --check Check hash files (format: hash filename)
-q, --quiet Output only the hash (no filename)
-h, --help Print help information
-V, --version Print version informationL'output è completamente compatibile con gli strumenti standard:
sha256sumper SHA-256sha512sumper SHA-512sha1sumper SHA-1
# Questi comandi producono output identici
sha256sum file.txt
sha-calc file.txt
sha-calc -a sha256 file.txt- Gestione efficiente della memoria per file di grandi dimensioni
- Lettura a buffer per ottimizzare I/O
- Supporto per file binari di qualsiasi dimensione
- Hash calcolati in streaming senza caricare tutto in memoria
L'applicazione include test completi:
# Esegui tutti i test
cargo test
# Test con output dettagliato
cargo test -- --nocapture
# Test di integrazione
cargo test --test integration_tests
# Test con copertura
cargo test && cargo tarpaulin --html- Test unitari per tutti gli algoritmi hash
- Test di integrazione CLI
- Test di compatibilità con valori noti
- Test di gestione errori
- Test di pattern glob
- Test di modalità verifica
- Test di performance con file grandi
- SHA-1: Deprecato per uso crittografico, mantenuto solo per compatibilità
- SHA-256/384/512: Raccomandati per la maggior parte degli utilizzi
- SHA-3: Algoritmo più recente, ottima alternativa
- BLAKE2: Prestazioni eccellenti, sicurezza elevata
L'applicazione gestisce correttamente:
- File non esistenti
- Permessi insufficienti
- Pattern glob non validi
- File di hash malformati
- Input corrotti
- Interruzioni di I/O
# Crea checksums per backup
find /important/data -type f -exec sha-calc {} \; > backup_checksums.txt
# Verifica integrità dopo restore
sha-calc -c backup_checksums.txt# Directory A
cd /path/to/dir_a
sha-calc * > ../checksums_a.txt
# Directory B
cd /path/to/dir_b
sha-calc * > ../checksums_b.txt
# Confronta
diff ../checksums_a.txt ../checksums_b.txt# Baseline
sha-calc /etc/passwd /etc/shadow > system_baseline.txt
# Controllo periodico
sha-calc -c system_baseline.txt || echo "ALERT: System files changed!"- Fork del progetto
- Crea feature branch (
git checkout -b feature/amazing-feature) - Commit delle modifiche (
git commit -m 'Add amazing feature') - Push al branch (
git push origin feature/amazing-feature) - Apri una Pull Request
Questo progetto è licenziato sotto MIT License - vedi il file LICENSE per dettagli.
- Implementazione iniziale
- Supporto per tutti gli algoritmi SHA principali
- Compatibilità con sha256sum
- Modalità di verifica
- Supporto pattern glob
- Test completi