
Cripto en Rust con cero dependencias por defecto: BLAKE3, Ed25519/X25519, hashes, MACs, KDFs, AEADs y sumas de verificación con aceleración completa SIMD/ASM.
rscrypto pone primitivas criptográficas, hashes criptográficos y rápidos,
hash de contraseñas y sumas de verificación detrás de un único modelo de
características. SIMD y ensamblador limitados por objetivo aceleran los
backends portables de Rust sin una dependencia de C/FFI de producción, OpenSSL
o bibliotecas del sistema.
rscrypto es un crate de primitivas, no una pila TLS, un kit de PKI, un
almacén de claves ni una implementación de protocolo.
La instantánea del 2026-08-18 compara el commit con la implementación externa emparejada más rápida para cada plataforma, primitiva, operación y forma de entrada en ocho runners de CI de Linux. La línea base externa se selecciona caso por caso, no se promedia entre competidores. Las proporciones son ; cuanto más alto, mejor.
7eb44e9external / rscryptoEn 6.144 comparaciones de casos exactos, rscrypto fue más de un 5% más rápido
en 3.780, dentro del 5% en 1.695 y más lento en 669. La aceleración media
geométrica fue de 1,62x en general, incluyendo 6,18x para sumas de verificación,
1,65x para RSA, 1,61x para AEAD y 1,55x para ML-KEM.
El resultado de Apple Silicon en el gráfico es una instantánea local separada del 2026-07-04; no está incluido en el agregado de Linux.
Esto es una ventaja general del conjunto, no una afirmación de que cada
operación gana. La misma instantánea publica la regresión de ECDSA en s390x y la
ruta más lenta rapidhash-stream/one-write junto con cada fila en bruto. Lea la
descripción general de benchmarks para ver la
tarjeta de puntuación completa y la guía de benchmarks
antes de aplicar un resultado a una carga de trabajo de despliegue.
Las afirmaciones de seguridad fallan de forma cerrada: la evidencia faltante u obsoleta elimina la afirmación en lugar de debilitar la puerta.
ct.toml y combina inspección optimizada de binarios enlazados,
pruebas BINSEC para kernels declarados de forma fija y pruebas de tiempo
DudeCT para casos declarados de extremo a extremo.Debug, omiten la
igualdad ordinaria y sobrescriben los bytes propios al soltar. Las fallas de
verificación son opacas; las aperturas AEAD fallidas limpian los buffers de
salida del llamador.Una afirmación de tiempo constante existe solo cuando la versión firmada coincidente incluye un paquete de evidencia atestiguado cuyas puertas requeridas de objetivo, característica, compilador, perfil y operación pasan. El código fuente que parece sin ramas no se trata como prueba. Los artefactos de versión están limitados por etiquetas firmadas, se publican a través de Trusted Publishing de crates.io y están cubiertos por atestaciones de procedencia de compilación de GitHub.
Inspeccione la evidencia de pruebas, el
modelo de tiempo constante, el
ciclo de vida de secretos, el
modelo de amenazas y el contrato de versiones.
La brecha restante de revisión independiente es una auditoría de seguridad de
terceros. El proyecto actualmente no puede financiarla. La evidencia
automatizada no reemplaza esa revisión, por lo que rscrypto no afirma estar
auditado, validado según FIPS 140-3, verificado formalmente ni ser de tiempo
constante como crate completo.
Reporte vulnerabilidades sospechosas a través de
Informe Privado de Vulnerabilidades de GitHub
bajo el proceso de SECURITY.md, no mediante un issue público.
Compilación mínima de SHA-2 con no_std:
[dependencies]
rscrypto = { version = "0.9", default-features = false, features = ["sha2"] }
Pila completa de primitivas con aleatoriedad del sistema operativo habilitada:
[dependencies]
rscrypto = { version = "0.9", features = ["full", "getrandom"] }
La característica predeterminada es std; default-features = false la
elimina. Habilite getrandom solo para APIs que obtienen sales, claves, nonces
o entropía de generación de claves RSA del sistema operativo. La
guía de características es la propietaria de las
dependencias exactas y los controles de despliegue.
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);
Las APIs de hash admiten uso de una sola pasada y de flujo. Los flujos de
trabajo ejecutables para AEAD, firmas, RSA, X25519, ML-KEM, hash de contraseñas
e introspección de backend están en examples/README.md.
| Familia | Incluido | Habilitar |
|---|---|---|
| Sumas de verificación | CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe | checksums o características hoja |
| Hashes criptográficos | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes o características hoja |
| Hashes rápidos | XXH3-64/128, RapidHash V3-64 | fast-hashes o características hoja |
| MAC y KDF | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs o características hoja |
| Hash de contraseñas | Argon2d/i/id, scrypt, registros PHC acotados de contraseñas | password-hashing o características hoja |
| Firmas y RSA | ECDSA P-256/P-384, Ed25519, firma RSA, verificación, cifrado y generación de claves | signatures o características hoja |
| Intercambio de claves y KEM | X25519, ML-KEM-512/768/1024 | key-exchange o características hoja |
| AEAD | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead o características hoja |
Use docs.rs para tipos y métodos exactos. Use la
guía de migración al reemplazar otra biblioteca.
La implementación portable de Rust es la autoridad byte por byte. El soporte de
objetivos en tiempo de compilación y, con std, las capacidades de CPU
detectadas en tiempo de ejecución seleccionan kernels SIMD o de ensamblador
elegibles. La aceleración no admitida vuelve a Rust portable.
La guía de plataformas es la propietaria de la matriz de
objetivos, el modelo de despacho, la cobertura de no_std y los límites de
portable-only.
Lea CONTRIBUTING.md antes de cambiar código. Los cambios
publicados viven en CHANGELOG.md.
Doble licencia bajo Apache-2.0 o MIT, a su elección.