
Rust crypto com zero dependências padrão: BLAKE3, Ed25519/X25519, hashes, MACs, KDFs, AEADs e checksums com aceleração SIMD/ASM completa.
rscrypto coloca primitivas criptográficas, hashes criptográficos e rápidos, hashing de senhas
e checksums atrás de um único modelo de features.
SIMD e assembly condicionados por target aceleram backends Rust portáveis sem uma dependência de produção em C/FFI,
OpenSSL ou bibliotecas de sistema.
rscrypto é uma crate de primitivas, não uma stack TLS, toolkit de PKI, armazenamento de chaves ou implementação de protocolo.
As alegações de desempenho limitam-se a campanhas retidas exatas e cargas de trabalho equivalentes. A campanha corrigida de setembro de 2026 contém 19.614 casos concluídos, incluindo comparações corrigidas de ML-KEM e Argon2, mas nenhum scorecard agregado substituto foi curado. Agregados mais antigos que misturavam entropia, preparação de chaves, representação de saída ou comprimentos de salt permanecem registros históricos e não são alegações de desempenho atuais.
A visão geral de benchmarks registra as campanhas, resultados específicos por target e limites remanescentes.
Os contratos de comparação definem cargas de trabalho equivalentes de ML-KEM e Argon2.
As alegações de segurança falham de forma fechada: evidência ausente ou desatualizada remove a alegação em vez de enfraquecer o gate.
ct.toml
e combina inspeção otimizada de binário linkado, provas BINSEC para kernels de forma fixa
declarados e testes de timing DudeCT para casos ponta a ponta declarados.Debug e limpam o armazenamento inicializado no drop.
As regras de duplicação variam por tipo: o estado de BLAKE2/BLAKE3 com chave suporta Clone.
O inventário de propriedade lista essas fronteiras.
Falhas de verificação são opacas; aberturas AEAD falhas limpam o texto simples não autenticado.Uma alegação de tempo constante existe apenas quando a evidência para o target, feature, compilador, perfil e operação exigidos passa. Código que parece sem ramificações não é tratado como prova.
Inspecione a evidência de testes, o modelo de tempo constante, o ciclo de vida de segredos e o modelo de ameaças.
A lacuna remanescente de revisão independente é uma auditoria de segurança por terceiros.
O projeto atualmente não pode financiar uma.
Evidência automatizada não substitui essa revisão, portanto rscrypto não alega ser auditada,
validada FIPS 140-3, formalmente verificada ou de tempo constante como uma crate inteira.
Relate vulnerabilidades suspeitas através do GitHub Private Vulnerability Reporting sob o
processo do SECURITY.md, não como uma issue pública.
Build mínimo de SHA-2 em no_std:
[dependencies]
rscrypto = { version = "0.10", default-features = false, features = ["sha2"] }
Stack completo de primitivas com aleatoriedade do SO habilitada:
[dependencies]
rscrypto = { version = "0.10", features = ["full", "getrandom"] }
A feature padrão é std; default-features = false a 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 features explica a seleção de build; o Cargo.toml é o dono do grafo exato de features.
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 one-shot e streaming.
Fluxos de trabalho executáveis para AEAD, assinaturas, RSA, ECDH P-256 e P-384, X25519, ML-KEM, hashing 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 features folha |
| Hashes criptográficos | SHA-2, SHA-3, SHAKE, cSHAKE, BLAKE2, BLAKE3, Ascon-Hash/XOF/CXOF | crypto-hashes ou features folha |
| Hashes rápidos | XXH3-64/128, RapidHash V3-64 | fast-hashes ou features folha |
| MACs e KDFs | HMAC-SHA-2/SHA-3, KMAC128/256, Poly1305, HKDF-SHA-2, PBKDF2-HMAC-SHA-2 | macs, kdfs ou features folha |
| Hashing de senhas | Argon2d/i/id, scrypt, registros de senha PHC limitados | password-hashing ou features folha |
| Assinaturas e RSA | ECDSA P-256/P-384, Ed25519, ML-DSA-44/65/87, assinatura, verificação, criptografia e geração de chaves RSA | signatures ou features folha |
| Troca de chaves e KEMs | P-256 ECDH, P-384 ECDH, X25519, ML-KEM-512/768/1024 | key-exchange ou features folha |
| AEADs | AES-GCM, AES-GCM-SIV, AES-SIV-CMAC, ChaCha20-Poly1305, XChaCha20-Poly1305, AEGIS-256, Ascon-AEAD128 | aead ou features folha |
O digest de accept de WebSocket apenas para compatibilidade requer websocket-sha1,
que é excluído de full e de qualquer outra feature guarda-chuva.
Use o docs.rs para tipos e métodos exatos.
A implementação Rust portável é a autoridade byte a byte.
O suporte de target 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 recorre ao Rust portável.
O guia de plataformas explica o catálogo de targets suportados, dispatch, cobertura de no_std
e os limites de portable-only.
Os guias e exemplos descrevem o código-fonte que os acompanha. Use a versão correspondente da documentação da API para uma dependência publicada.
Leia o CONTRIBUTING.md antes de alterar o código.
As alterações publicadas estão no CHANGELOG.md.
Licenciado duplamente sob Apache-2.0 ou MIT, à sua escolha.