rsa_oaep_dart 0.1.3
rsa_oaep_dart: ^0.1.3 copied to clipboard
Pure Dart implementation of RSAES-OAEP (PKCS#1 v2.2)
RSA OAEP Dart Library #
Implementação completa e pura de RSAES-OAEP (PKCS#1 v2.2) em Dart, com suporte a SHA-256.
Ideal para projetos que precisam de criptografia assimétrica segura, sem dependências nativas.
📦 Compatibilidade #
Esta biblioteca é compatível com Dart SDK 3.0.0 ou superior.
Dart 3.0.0 foi lançado em maio de 2023, junto com Flutter 3.10.
Portanto, este pacote é compatível com projetos que utilizam:
- Dart: >=3.0.0 <4.0.0
- Flutter: >=3.10.0
Se o seu projeto ainda utiliza uma versão anterior do Dart ou Flutter, será necessário atualizá-lo para utilizar este pacote.
🚀 Funcionalidades #
✅ Suporte ao esquema RSAES-OAEP com MGF1.
✅ Compatível com SHA-256 (default).
✅ Interoperável com OpenSSL (criptografia e descriptografia).
✅ Testes automatizados e exemplos práticos.
✅ Código puro Dart, ideal para Flutter e backend.
🛠️ Como usar #
Instalar #
Adicione ao pubspec.yaml:
dependencies:
rsa_oaep_dart: ^0.1.3
Disponível no pub.dev.
Importar #
import 'package:rsa_oaep_dart/rsa_oaep_dart.dart';
Veja mais detalhes na documentação oficial.
💻 Exemplos #
Executar exemplos completos #
cd lib/example
make
Menu interativo #
make
Inclui:
- Geração de chaves
- Criptografia com Dart e OpenSSL
- Descriptografia com Dart e OpenSSL
🧪 Testes #
dart test
✅ Conformidade #
- RFC 8017 — PKCS#1 v2.2
- MGF1 com SHA-256
- Compatível com
openssl pkeyutlpara interoperabilidade.
🔒 Segurança #
Esta implementação segue as boas práticas de segurança para operações criptográficas:
- Geração segura de chaves
- Uso correto de OAEP e MGF1
- Tratamento de mensagens inválidas
📚 Interoperabilidade & Boas Práticas #
Conversão de mensagens #
Para garantir interoperabilidade com sistemas externos (KMS, OpenSSL, etc.):
-
Sempre converta sua mensagem para bytes usando UTF-8 ANTES de criptografar:
Uint8List messageBytes = Uint8List.fromList(utf8.encode('Sua mensagem aqui')); -
Para descriptografar, o resultado será
Uint8List(bytes).- Para converter de volta para
String:
String mensagem = utf8.decode(decryptedBytes); - Para converter de volta para
Transmissão e armazenamento #
-
Se precisar transmitir ou armazenar o
ciphertext, use Base64:String ciphertextB64 = base64.encode(ciphertextBytes); Uint8List ciphertextBytes = base64.decode(ciphertextB64);
Sobre Base64 #
- Use
base64.decode()apenas se a entrada foi originalmente codificada em Base64. - Não converta a mensagem original para Base64 antes de criptografar — utilize sempre bytes UTF-8.
Resumo #
- Entrada e saída dos métodos são sempre em
Uint8List(bytes). - O usuário é responsável pela conversão adequada da mensagem e do ciphertext, conforme a necessidade da aplicação.
Veja exemplos completos na documentação oficial.
⚠️ Aviso de Segurança #
Esta biblioteca é uma implementação pura em Dart dos algoritmos RSA OAEP com MGF1 e SHA-256.
Ela não foi auditada por especialistas em segurança para uso em ambientes críticos ou produção sensível.
Recomenda-se:
✅ Revisão do código por especialistas antes de uso em sistemas de segurança sensível.
✅ Utilização consciente das limitações de uma implementação em linguagem de alto nível como Dart.
Esta biblioteca é ideal para:
- Prototipagem
- Estudos
- Aplicações não críticas
Mas pode não ser adequada para casos onde segurança formalmente auditada é obrigatória.
📊 Integração com Codecov #
Este projeto utiliza Codecov para monitoramento de cobertura de testes.
A cada push ou pull request para a branch main, o GitHub Actions executa automaticamente:
- Análise de código
- Testes automatizados
- Geração de relatório de cobertura (
lcov.info) - Upload para o Codecov
O badge no topo deste README exibe a cobertura atualizada.
Para visualizar o relatório completo, acesse:
https://codecov.io/gh/gabrielscota/rsa_oaep_dart
✅ Roadmap #
- ❌ Suporte a SHA-1, SHA-512
- ❌ Suporte a labels customizados
- ❌ Automatização com CI/CD
📄 Licença #
MIT — veja o arquivo LICENSE.