
Rust crypto com zero dependências padrão: BLAKE3, Ed25519/X25519, hashes, MACs, KDFs, AEADs e checksums com aceleração SIMD/ASM completa.
O rscrypto coloca primitivas criptográficas, hashes criptográficos e rápidos,
hash de senhas e checksums atrás de um único modelo de recursos. SIMD e assembly
direcionados por alvo aceleram os backends Rust portáteis sem dependência de
C/FFI de produção, OpenSSL ou bibliotecas do sistema.
O rscrypto é um crate de primitivas, não uma pilha TLS, kit PKI, armazenamento
de chaves ou implementação de protocolo.
O snapshot de 2026-08-18 compara o commit com a implementação externa correspondente mais rápida para cada plataforma, primitiva, operação e formato de entrada em oito runners Linux de CI. A linha de base externa é selecionada caso a caso, não calculada como média entre concorrentes. As proporções são ; quanto maior, melhor.
7eb44e9external / rscryptoEm 6.144 comparações de casos exatos, o rscrypto foi mais de 5% mais rápido em
3.780, dentro de 5% em 1.695 e mais lento em 669. A aceleração média geométrica
foi de 1,62x no geral, incluindo 6,18x para checksums, 1,65x para RSA, 1,61x
para AEAD e 1,55x para ML-KEM.
O resultado Apple Silicon no gráfico é um snapshot local separado de 2026-07-04; ele não está incluído no agregado Linux.
Esta é uma liderança geral do conjunto, não uma afirmação de que toda operação
vence. O mesmo snapshot publica a regressão ECDSA s390x e o caminho mais lento
rapidhash-stream/one-write junto com cada linha bruta. Leia a
visão geral de benchmarks para o placar
completo e o guia de benchmarking antes de aplicar um
resultado a uma carga de trabalho de implantação.
As afirmações de segurança falham de forma fechada: evidências ausentes ou desatualizadas removem a afirmação em vez de enfraquecer a barreira.
ct.toml
e combina inspeção otimizada de binários vinculados, provas BINSEC para kernels
declarados de forma fixa e testes de temporização DudeCT para casos declarados
de ponta a ponta.Debug, omitem igualdade
comum e sobrescrevem bytes próprios na liberação. Falhas de verificação são
opacas; aberturas AEAD com falha limpam buffers de saída do chamador.Uma afirmação de tempo constante existe somente quando a versão assinada correspondente inclui um pacote de evidências atestado cujas barreiras exigidas de alvo, recurso, compilador, perfil e operação passam. Código-fonte que parece sem ramificações não é tratado como prova. Artefatos de versão são limitados por tags assinadas, publicados através do Trusted Publishing do crates.io e cobertos por atestações de proveniência de build do GitHub.
Inspecione a evidência de testes, o
modelo de tempo constante, o
ciclo de vida de segredos, o
modelo de ameaças e o contrato de versão.
A lacuna restante de revisão independente é uma auditoria de segurança de
terceiros. O projeto atualmente não pode financiar uma. Evidências automatizadas
não substituem essa revisão, então o rscrypto não afirma ser auditado,
validado FIPS 140-3, formalmente verificado ou de tempo constante como um crate
inteiro.
Relate vulnerabilidades suspeitas através do
Relatório Privado de Vulnerabilidades do GitHub
sob o processo do SECURITY.md, não em uma issue pública.
Build mínimo no_std de SHA-2:
[dependencies]
rscrypto = { version = "0.9", default-features = false, features = ["sha2"] }
Pilha completa de primitivas com aleatoriedade do SO habilitada:
[dependencies]
rscrypto = { version = "0.9", features = ["full", "getrandom"] }
O recurso padrão é std; default-features = false o remove. Habilite
getrandom apenas para APIs que obtêm salts, chaves, nonces ou entropia de
geração de chaves RSA do sistema operacional. O guia de recursos
é o dono das dependências exatas e dos controles de implantação.
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);
As APIs de hash suportam uso de uma única chamada e streaming. Fluxos de trabalho
executáveis para AEAD, assinaturas, RSA, X25519, ML-KEM, hash de senhas e
introspecção de backend estão em examples/README.md.
| Família | Incluído | Habilitar |
|---|---|---|
| Checksums | CRC-16, CRC-24, CRC-32, CRC-32C, CRC-64/XZ, CRC-64/NVMe | checksums ou recursos folha |
| Hashes criptográficos | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes ou recursos folha |
| Hashes rápidos | XXH3-64/128, RapidHash V3-64 | fast-hashes ou recursos folha |
| MACs e KDFs | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs ou recursos folha |
| Hash de senhas | Argon2d/i/id, scrypt, registros PHC de senha limitados | password-hashing ou recursos folha |
| Assinaturas e RSA | ECDSA P-256/P-384, Ed25519, assinatura RSA, verificação, criptografia e geração de chaves | signatures ou recursos folha |
| Troca de chaves e KEMs | X25519, ML-KEM-512/768/1024 | key-exchange ou recursos folha |
| AEADs | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead ou recursos folha |
Use o docs.rs para tipos e métodos exatos. Use o
guia de migração ao substituir outra biblioteca.
A implementação Rust portátil é a autoridade byte por byte. O suporte de alvo em
tempo de compilação e, com std, as capacidades de CPU detectadas em tempo de
execução selecionam kernels SIMD ou assembly elegíveis. Aceleração não suportada
recai para Rust portátil.
O guia de plataformas é o dono da matriz de alvos, do
modelo de despacho, da cobertura no_std e dos limites de portable-only.
Leia o CONTRIBUTING.md antes de alterar código. Mudanças
publicadas estão no CHANGELOG.md.
Dupla licença sob Apache-2.0 ou MIT, à sua escolha.