DEV Community

Lithe
Lithe

Posted on

1 1

Lithe Crypt: Simplificando a Criptografia em Aplicações PHP

O Lithe Crypt é uma utilidade simples para criptografia e descriptografia em PHP, projetada para funcionar com o framework Lithe. Ele utiliza o algoritmo AES-256-CBC para um manuseio seguro de dados.

Instalação

Para instalar o pacote Lithe Crypt, você pode usar o Composer. Se ainda não o tem instalado, certifique-se de que o Composer está disponível no seu sistema. Em seguida, execute o seguinte comando no diretório do seu projeto:

composer require lithemod/crypt
Enter fullscreen mode Exit fullscreen mode

Requisitos

  • PHP 8 ou superior
  • Extensão OpenSSL habilitada na sua instalação do PHP

Uso

Carregando Variáveis de Ambiente

Antes de usar a classe Crypt, você precisa carregar suas variáveis de ambiente. Use o seguinte código para carregar seu arquivo .env:

use Lithe\Support\Env;

// Carregar variáveis de ambiente
Env::load(__DIR__); // Ajuste o caminho conforme necessário
Enter fullscreen mode Exit fullscreen mode

Definindo a APP_KEY

Certifique-se de que a variável de ambiente APP_KEY está definida. Essa chave deve ser uma string codificada em base64 de 32 bytes. Você pode configurá-la no seu arquivo .env ou diretamente no ambiente do servidor.

Exemplo de uma chave base64 válida:

YXNkZmFnc2Rhc2RmYWdlcyBhc2RmYWdlcyBhYXNkZmFnc2Q=
Enter fullscreen mode Exit fullscreen mode

Criptografando Dados

Para criptografar dados, utilize o método encrypt da classe Crypt. Você também pode especificar se deseja usar um IV fixo (vetor de inicialização) para a criptografia:

use Lithe\Support\Security\Crypt;

$data = "dados sensíveis";

// Criptografar sem IV fixo
$encrypted = Crypt::encrypt($data);
echo "Dados Criptografados: " . $encrypted;

// Criptografar com IV fixo (útil para valores únicos como e-mails)
$encryptedWithSameIV = Crypt::encrypt($data, true);
echo "Dados Criptografados com IV Fixo: " . $encryptedWithSameIV;
Enter fullscreen mode Exit fullscreen mode

Descriptografando Dados

Para descriptografar os dados criptografados anteriormente, utilize o método decrypt. Você deve especificar os mesmos parâmetros usados durante a criptografia para garantir uma descriptografia correta:

use Lithe\Support\Security\Crypt;

// Descriptografar sem IV fixo
$decrypted = Crypt::decrypt($encrypted);
echo "Dados Descriptografados: " . $decrypted;

// Descriptografar com IV fixo
$decryptedWithSameIV = Crypt::decrypt($encryptedWithSameIV, true, $data);
echo "Dados Descriptografados com IV Fixo: " . $decryptedWithSameIV;
Enter fullscreen mode Exit fullscreen mode

Tratamento de Exceções

Se a APP_KEY não estiver definida ou for inválida, a classe Crypt lançará uma CryptException. É essencial tratar essa exceção em seu código para evitar erros inesperados:

use Lithe\Exceptions\Encryption\CryptException;

try {
    $encrypted = Crypt::encrypt($data);
    // Descriptografar sem IV fixo
    $decrypted = Crypt::decrypt($encrypted);
} catch (CryptException $e) {
    echo "Erro de Criptografia: " . $e->getMessage();
}
Enter fullscreen mode Exit fullscreen mode

Considerações Finais

O Lithe Crypt oferece uma forma prática e segura de lidar com a criptografia e descriptografia de dados em suas aplicações PHP. Com a implementação do algoritmo AES-256-CBC e a facilidade de integração com o framework Lithe, você pode proteger seus dados de maneira eficaz. Experimente e veja como ele pode aprimorar a segurança da sua aplicação!

Se você tiver alguma dúvida ou sugestão, sinta-se à vontade para comentar abaixo!

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

AWS Security LIVE!

Hosted by security experts, AWS Security LIVE! showcases AWS Partners tackling real-world security challenges. Join live and get your security questions answered.

Tune in to the full event

DEV is partnering to bring live events to the community. Join us or dismiss this billboard if you're not interested. ❤️