Download the PHP package sierratecnologia/crypto without Composer
On this page you can find all versions of the php package sierratecnologia/crypto. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package crypto
Crypto
Crypto - Powerful and elegant cryptography tools for Laravel and Lumen
📚 Índice
- Introdução
- Instalação
- Arquitetura e Estrutura Interna
- Principais Componentes
- Uso Prático
- Integração com o Ecossistema SierraTecnologia
- Extensão e Customização
- Exemplos Reais
- Guia de Contribuição
- Licença
🎯 Introdução
O que é o Crypto?
O Crypto é um pacote Laravel/Lumen desenvolvido pela SierraTecnologia que fornece uma camada robusta e elegante de criptografia para aplicações PHP. Ele oferece ferramentas poderosas para:
- Criptografia e descriptografia de dados sensíveis usando AES-256-CBC
- Criptografia automática de campos em modelos Eloquent através de Traits
- Geração de UUIDs (Universally Unique Identifiers)
- Encoding/Decoding seguro para URLs
- Helpers e Facades para facilitar o desenvolvimento
- Blade Directives para uso direto em templates
- Comandos de console para gerenciamento de chaves
Objetivo e Motivação
A segurança de dados é uma preocupação crítica em aplicações modernas. O Crypto nasceu da necessidade de:
- Padronizar a criptografia em todos os projetos do ecossistema SierraTecnologia
- Simplificar a implementação de criptografia em campos de banco de dados
- Garantir compatibilidade entre diferentes serviços e aplicações
- Fornecer uma API intuitiva que reduz a complexidade da criptografia OpenSSL
- Manter a segurança sem sacrificar a performance ou usabilidade
Benefícios para Projetos Laravel
✅ Transparência: Criptografa e descriptografa dados automaticamente nos modelos Eloquent ✅ Flexibilidade: Suporta criptografia compartilhada entre aplicações ✅ Facilidade: Helpers globais e Facades para acesso rápido ✅ Integração: Blade Directives para uso direto em views ✅ Segurança: Implementação robusta com OpenSSL e AES-256-CBC ✅ Performance: Otimizado para aplicações de alta demanda
Como se Encaixa no Ecossistema SierraTecnologia
O Crypto é uma peça fundamental na arquitetura de microsserviços da SierraTecnologia / Rica Soluções. Ele é utilizado por diversos pacotes internos para:
- Proteger dados sensíveis de usuários (PII - Personal Identifiable Information)
- Criptografar tokens e chaves de API
- Compartilhar dados criptografados entre serviços
- Garantir conformidade com LGPD/GDPR
- Manter a integridade de dados em ambientes distribuídos
🚀 Instalação
Requisitos Mínimos
- PHP: 8.0 ou superior (recomendado 8.2+)
- Laravel: 8.x, 9.x, 10.x ou 11.x
- Lumen: 8.x, 9.x, 10.x ou 11.x
- Extensões PHP:
ext-openssl(para criptografia)ext-gmp(para operações matemáticas de criptografia)ext-mbstring(para manipulação de strings)
Instalação via Composer
1. Criar um novo projeto Laravel (se necessário)
2. Instalar o pacote Crypto
3. Publicar arquivos de configuração (opcional)
O pacote utiliza auto-discovery do Laravel, portanto não é necessário registrar manualmente o Service Provider. Porém, se estiver usando Lumen, você precisa:
4. Configurar variáveis de ambiente
Certifique-se de que sua aplicação possui uma chave (APP_KEY) configurada no arquivo .env:
O Crypto utiliza a APP_KEY do Laravel como base para criptografia. IMPORTANTE: Não altere ou perca esta chave, pois os dados criptografados não poderão ser recuperados.
🏗️ Arquitetura e Estrutura Interna
Estrutura de Diretórios
Namespaces Principais
SierraTecnologia\Crypto: Namespace raiz do pacoteSierraTecnologia\Crypto\Services: Classes de serviço (Facade Crypto)SierraTecnologia\Crypto\Encryption: Motores de criptografiaSierraTecnologia\Crypto\Traits: Traits reutilizáveis para modelosSierraTecnologia\Crypto\Console: Comandos Artisan
Padrões Arquiteturais
1. Service Provider Pattern
O CryptoProvider registra serviços, aliases e comandos:
2. Facade Pattern
A classe Crypto funciona como Facade para facilitar o acesso:
3. Trait Pattern
O Encryptable trait adiciona criptografia automática aos modelos:
4. Strategy Pattern
Diferentes estratégias de criptografia podem ser implementadas através da interface CryptoEncrypterInterface:
CryptoEncrypter: Criptografia customizada com chaves compartilháveisLaravelCrypto: Wrapper para o encrypter nativo do Laravel
Convenções de Codificação
O projeto segue as convenções da SierraTecnologia:
- PSR-12 para estilo de código
- PHPDoc completo em todas as classes e métodos
- Type hints e return types em PHP 8+
- Nomenclatura em inglês para código, português para comentários internos
- Tests unitários com PHPUnit
- Análise estática com PHPStan (level 8) e Psalm (level 7)
🔧 Principais Componentes
1. CryptoService (Facade)
Localização: src/Services/Crypto.php
A classe principal que expõe todos os métodos de criptografia:
Métodos Principais:
| Método | Descrição |
|---|---|
encrypt(string $value): string |
Criptografa um valor usando a chave da aplicação |
decrypt(string $value): string |
Descriptografa um valor |
uuid(): string |
Gera um UUID v4 |
shareableEncrypt(string $value): string |
Criptografa com chave compartilhável |
shareableDecrypt(string $value): string |
Descriptografa chave compartilhável |
urlEncode(string $value): string |
Criptografa e codifica para URL |
urlDecode(string $value): string |
Decodifica e descriptografa de URL |
isCrypto(string $crypto): bool |
Verifica se string parece criptografada |
2. CryptoEncrypter
Localização: src/Encryption/CryptoEncrypter.php
Motor de criptografia que implementa AES-256-CBC com OpenSSL:
Características:
- Algoritmo: AES-256-CBC (OpenSSL)
- IV (Initialization Vector): Gerado aleatoriamente para cada criptografia
- Chave de criptografia: MD5 combinado de
APP_KEY+session key - URL-safe: Codificação automática para uso em URLs
Fluxo de Criptografia:
Fluxo de Descriptografia:
3. Encryptable Trait
Localização: src/Traits/Encryptable.php
Trait que adiciona criptografia automática a modelos Eloquent:
Funcionamento:
- Set Automático: Ao atribuir um valor a um campo listado em
$encrypted, ele é automaticamente criptografado antes de salvar no banco - Get Automático: Ao recuperar o modelo, os campos são automaticamente descriptografados
- toArray/toJson: Os dados são descriptografados antes da serialização
Exemplo de Uso:
4. Helpers Globais
Localização: src/Helpers/crypto.php
Funções helper para uso global:
5. Blade Directives
Localização: src/CryptoProvider.php:26-36
Diretivas Blade para uso em templates:
Exemplo em View:
6. Console Commands
Localização: src/Console/KeyMaster.php
Comando Artisan para gerenciamento de chaves (inferido pela estrutura):
💻 Uso Prático
Cenário 1: Criptografar Campos de Modelo
Problema: Você precisa armazenar dados sensíveis de clientes (email, CPF, telefone) de forma criptografada no banco de dados.
Solução:
Cenário 2: Criptografar Parâmetros de URL
Problema: Você precisa enviar IDs ou dados sensíveis em URLs de email (ex: reset de senha, confirmação de cadastro).
Solução:
Cenário 3: Compartilhar Dados Entre Aplicações
Problema: Você tem múltiplas aplicações (API, Admin, Frontend) que precisam compartilhar dados criptografados.
Solução:
IMPORTANTE: Para que a criptografia compartilhável funcione, ambas as aplicações devem ter a mesma APP_KEY no arquivo .env.
Cenário 4: Uso em Blade Templates
Problema: Você precisa exibir ou manipular dados criptografados diretamente em views.
Solução:
Boas Práticas de Segurança
✅ DO (Faça)
- Sempre use HTTPS em produção para proteger dados em trânsito
- Backup da APP_KEY: Mantenha backup seguro da chave (sem ela, dados são irrecuperáveis)
- Rotação de chaves: Planeje estratégia de rotação de chaves periodicamente
- Validação de entrada: Sempre valide dados antes de criptografar/descriptografar
- Logs seguros: Não logue dados descriptografados ou chaves
- Tratamento de exceções: Capture e trate erros de descriptografia adequadamente
❌ DON'T (Não Faça)
- Não hardcode chaves no código-fonte
- Não compartilhe APP_KEY em repositórios públicos
- Não criptografe campos de busca (você não conseguirá fazer WHERE)
- Não criptografe tudo (apenas dados sensíveis, por performance)
- Não altere APP_KEY sem migrar dados criptografados
- Não use criptografia para senhas (use Hash::make do Laravel)
🔗 Integração com o Ecossistema SierraTecnologia
O Crypto é uma dependência fundamental em diversos pacotes da SierraTecnologia / Rica Soluções:
Pacotes que Utilizam Crypto
| Pacote | Uso |
|---|---|
| Market | Criptografia de dados de pagamento e transações |
| MediaManager | Proteção de metadados sensíveis de arquivos |
| Informate | Criptografia de dados pessoais em relatórios |
| Telephon | Proteção de números de telefone e contatos |
| Population | Criptografia de dados censitários sensíveis |
| Fabrica | Proteção de configurações de ambientes |
Padrões de Versionamento
O Crypto segue o Semantic Versioning (SemVer):
- Major (X.0.0): Mudanças incompatíveis com versões anteriores
- Minor (0.X.0): Novas funcionalidades mantendo compatibilidade
- Patch (0.0.X): Correções de bugs
Integração com Pipelines CI/CD
O projeto possui pipelines compartilhados para garantir qualidade:
Exemplo de Integração Multi-Serviço
🎨 Extensão e Customização
Criar um Encrypter Customizado
Você pode implementar sua própria estratégia de criptografia:
Registrar Encrypter Customizado
Estender a Classe Crypto
Substituir Implementação Padrão via Service Provider
Criar Trait Customizada
🌟 Exemplos Reais
Caso 1: E-commerce com Criptografia de Dados de Pagamento
Contexto: Loja virtual da SierraTecnologia que processa pagamentos com cartão de crédito.
Antes (sem Crypto):
Depois (com Crypto):
Resultado:
- ✅ Redução de 100% na exposição de dados sensíveis
- ✅ Conformidade com PCI-DSS Level 1
- ✅ Confiança do cliente aumentada
- ✅ Zero alterações no código dos controllers
Caso 2: Sistema de Assinatura Multi-tenant
Contexto: Plataforma SaaS com múltiplos tenants compartilhando infraestrutura.
Implementação:
Benefícios:
- ✅ Isolamento de dados entre tenants
- ✅ Segurança em filas e workers
- ✅ Auditoria simplificada
- ✅ Conformidade com LGPD/GDPR
Caso 3: Sistema de Autenticação Distribuída
Contexto: Múltiplas aplicações (Web, API, Mobile) compartilhando autenticação.
Implementação:
Benefícios:
- ✅ SSO (Single Sign-On) entre aplicações
- ✅ Tokens stateless (não precisa consultar DB)
- ✅ Escalabilidade horizontal
- ✅ Segurança com expiração automática
🤝 Guia de Contribuição
Como Contribuir
Contribuições são bem-vindas! Siga estas etapas:
1. Fork e Clone
2. Instalar Dependências
3. Criar Branch
Siga o padrão de nomenclatura:
4. Desenvolvimento
Certifique-se de seguir os padrões:
- PSR-12 para código
- PHPDoc completo
- Type hints e return types
- Testes unitários para novas funcionalidades
5. Executar Ferramentas de Qualidade
6. Commit e Push
Siga o padrão de commits:
Padrão de Mensagens de Commit:
feat:nova funcionalidadefix:correção de bugdocs:alterações em documentaçãostyle:formatação de código (sem mudança de lógica)refactor:refatoração de códigotest:adição ou correção de testeschore:tarefas de manutenção
7. Abrir Pull Request
- Descreva claramente as mudanças
- Referencie issues relacionadas
- Aguarde review da equipe
Padrões de Código
Executar Testes Localmente
Issues e Feature Requests
- Bugs: Descreva o erro, passos para reproduzir, versões (PHP, Laravel)
- Features: Explique o caso de uso, benefícios, exemplos
Código de Conduta
- Seja respeitoso e profissional
- Aceite feedback construtivo
- Foque no que é melhor para a comunidade
- Mostre empatia com outros colaboradores
Contato da Equipe
- Email: [email protected]
- Issues: https://github.com/sierratecnologia/crypto/issues
- Docs: https://docs.sierratecnologia.ca/others/crypto
📄 Licença
Crypto é um software de código aberto licenciado sob a Licença MIT.
Disclaimer
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU TITULARES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, DELITO OU DE OUTRA FORMA, DECORRENTE DE, FORA DE OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.
📞 Suporte e Contato
SierraTecnologia
SierraTecnologia é uma empresa de tecnologia especializada em soluções empresariais robustas e escaláveis para o ecossistema PHP/Laravel.
Rica Soluções
Parte do grupo Rica Soluções, oferecendo consultoria e desenvolvimento de software de alta qualidade.
Links
- Website: sierratecnologia.com.br
- Documentação: docs.sierratecnologia.ca
- GitHub: github.com/sierratecnologia
- Packagist: packagist.org/packages/sierratecnologia/crypto
Suporte
- Email: [email protected]
- Issues: github.com/sierratecnologia/crypto/issues
🙏 Agradecimentos
Agradecemos a todos os contribuidores e à comunidade Laravel/PHP por tornarem este projeto possível.
Autores Principais
- Matt Lantz (@mattylantz) - Conceito original
- Ricardo Sierra ([email protected]) - Arquitetura e desenvolvimento
- Equipe SierraTecnologia - Manutenção e evolução
Desenvolvido com ❤️ pela SierraTecnologia / Rica Soluções
All versions of crypto with dependencies
ext-gmp Version *
defuse/php-encryption Version ^2.2
illuminate/support Version ^5.0 || ^6.0 || ^7.0 || ^8.0
mdanter/ecc Version ^0.5
ramsey/uuid Version ^3.8|^4.0