
Cripto Rust con zero dipendenze predefinite: BLAKE3, Ed25519/X25519, hash, MAC, KDF, AEAD e checksum con piena accelerazione SIMD/ASM
rscrypto mette primitive crittografiche, hash crittografici e veloci,
hashing delle password e checksum dietro un unico modello di feature. SIMD e
assembly vincolati al target accelerano i backend Rust portabili senza una
dipendenza da C/FFI di produzione, OpenSSL o librerie di sistema.
rscrypto è una crate di primitive, non uno stack TLS, un toolkit PKI, un
key store o un'implementazione di protocolli.
Lo snapshot del 2026-08-18 confronta il commit con l'implementazione esterna più veloce corrispondente per ogni piattaforma, primitiva, operazione e forma di input su otto runner Linux CI. La baseline esterna è selezionata caso per caso, non mediata tra i concorrenti. I rapporti sono ; più alto è meglio.
7eb44e9esterno / rscryptoSu 6.144 confronti caso-esatto, rscrypto è stato più veloce del 5% in 3.780,
entro il 5% in 1.695 e più lento in 669. Lo speedup medio geometrico è stato
1,62x complessivamente, inclusi 6,18x per i checksum, 1,65x per RSA, 1,61x per
AEAD e 1,55x per ML-KEM.
Il risultato Apple Silicon nel grafico è uno snapshot locale separato del 2026-07-04; non è incluso nell'aggregato Linux.
Questo è un vantaggio complessivo della suite, non un'affermazione che ogni
operazione vinca. Lo stesso snapshot pubblica la regressione ECDSA s390x e il
percorso più lento rapidhash-stream/one-write insieme a ogni riga grezza.
Leggi la panoramica dei benchmark per il
scorecard completo e la guida al benchmarking prima di
applicare un risultato a un carico di lavoro di produzione.
Le affermazioni di sicurezza falliscono in modo chiuso: prove mancanti o obsolete rimuovono l'affermazione anziché indebolire il gate.
ct.toml e combina l'ispezione ottimizzata del binario collegato,
le prove BINSEC per i kernel dichiarati a forma fissa e i test di timing
DudeCT per i casi dichiarati end-to-end.Debug, omettono
l'uguaglianza ordinaria e sovrascrivono i byte posseduti alla drop. I
fallimenti di verifica sono opachi; le aperture AEAD fallite azzerano i
buffer di output del chiamante.Un'affermazione di tempo costante esiste solo quando la release firmata corrispondente include un bundle di prove attestato i cui gate richiesti di target, feature, compilatore, profilo e operazione passano. Il codice sorgente che sembra senza rami non è trattato come prova. Gli artefatti di release sono vincolati da tag firmati, pubblicati tramite Trusted Publishing di crates.io e coperti da attestazioni di build-provenance GitHub.
Ispeziona le prove di test, il
modello a tempo costante, il
ciclo di vita dei segreti, il
modello di minaccia e il
contratto di release.
Il divario rimanente di revisione indipendente è un audit di sicurezza di terze
parti. Il progetto attualmente non può finanziarlo. Le prove automatizzate non
sostituiscono quella revisione, quindi rscrypto non afferma di essere
sottoposto ad audit, validato FIPS 140-3, verificato formalmente o a tempo
costante come crate nel suo insieme.
Segnala vulnerabilità sospette tramite
GitHub Private Vulnerability Reporting
secondo il processo di SECURITY.md, non tramite un issue
pubblico.
Build minima no_std SHA-2:
[dependencies]
rscrypto = { version = "0.9", default-features = false, features = ["sha2"] }
Stack completo di primitive con casualità di sistema abilitata:
[dependencies]
rscrypto = { version = "0.9", features = ["full", "getrandom"] }
La feature predefinita è std; default-features = false la rimuove. Abilita
getrandom solo per le API che ottengono salt, chiavi, nonce o entropia per la
generazione di chiavi RSA dal sistema operativo. La
guida alle feature gestisce le dipendenze esatte e i
controlli di distribuzione.
use rscrypto::Sha256;
let one_shot = Sha256::digest(b"hello world");
let mut hasher = Sha256::new();
hasher.update(b"hello ");
hasher.update(b"world");
assert_eq!(hasher.finalize(), one_shot);
Le API di hash supportano l'uso one-shot e streaming. Flussi di lavoro
eseguibili per AEAD, firme, RSA, X25519, ML-KEM, hashing delle password e
introspezione dei backend sono in examples/README.md.
| Famiglia | Incluse | Abilita |
|---|---|---|
| Checksum | CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe | checksums o feature foglia |
| Hash crittografici | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes o feature foglia |
| Hash veloci | XXH3-64/128, RapidHash V3-64 | fast-hashes o feature foglia |
| MAC e KDF | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs o feature foglia |
| Hashing delle password | Argon2d/i/id, scrypt, record PHC con limite | password-hashing o feature foglia |
| Firma e RSA | ECDSA P-256/P-384, Ed25519, firma RSA, verifica, cifratura e generazione di chiavi | signatures o feature foglia |
| Scambio di chiavi e KEM | X25519, ML-KEM-512/768/1024 | key-exchange o feature foglia |
| AEAD | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead o feature foglia |
Usa docs.rs per tipi e metodi esatti. Usa la
guida alla migrazione quando sostituisci un'altra
libreria.
L'implementazione Rust portabile è l'autorità byte-per-byte. Il supporto target
a tempo di compilazione e, con std, le capacità CPU rilevate a runtime
selezionano i kernel SIMD o assembly idonei. L'accelerazione non supportata
ricade sul Rust portabile.
La guida alle piattaforme gestisce la matrice dei
target, il modello di dispatch, la copertura no_std e i limiti di
portable-only.
Leggi CONTRIBUTING.md prima di modificare il codice. Le
modifiche pubblicate sono in CHANGELOG.md.
Doppia licenza sotto Apache-2.0 o MIT, a tua scelta.