PHPackages                             piggly/php-encryption - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. piggly/php-encryption

ActiveLibrary[Security](/categories/security)

piggly/php-encryption
=====================

A simple class for generating signed or encrypted messages using the libsodium extension.

1.0.1(5y ago)015MITPHPPHP ^7.2

Since Feb 17Pushed 5y agoCompare

[ Source](https://github.com/piggly-dev/php-encryption)[ Packagist](https://packagist.org/packages/piggly/php-encryption)[ Docs](https://github.com/piggly-dev/php-sodium-encryption)[ RSS](/packages/piggly-php-encryption/feed)WikiDiscussions master Synced 6d ago

READMEChangelog (2)Dependencies (1)Versions (3)Used By (0)

Criptografia sem complicação
============================

[](#criptografia-sem-complicação)

[![Latest Version on Packagist](https://camo.githubusercontent.com/b778358402c41a5dac54075550cc5c6f18f536c37432a575355ad92938509bec/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f706967676c792f7068702d656e6372797074696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/piggly/php-encryption) [![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE)

Essa biblioteca foi criada para facilitar e simplificar o processo de criptografia de dados. O intuito dela é prover uma interface simples para conduzir diferentes tipos de criptografia conforme a necessidade.

Toda class de criptografia deve extender a classe `BaseCrypto` e conter o método `createKeys()` que retorna uma matriz de chaves em `array` para auxiliar o processo de criação de chaves segura para o método de criptografia.

Existe, no momento, dois métodos disponíveis:

- `BasicCrypto` criptografa dados de uma forma simples utilizando as funções nativas `openssl_encrypt` e `openssl_decrypt`. **Requer a extensão openssl** do PHP.
- `SolidumCrypto` criptografa e assina dados utilizando a criptografia de última geração **LibSodium**. **Requer a extensão sodium** do PHP *(veja mais detalhes em instalação)*.

> Se você apreciar a função desta biblioteca e quiser apoiar este trabalho, sinta-se livre para fazer qualquer doação para a chave aleatória Pix `aae2196f-5f93-46e4-89e6-73bf4138427b` ❤.

Instalação
----------

[](#instalação)

Essa biblioteca pode ser instalada via **Composer** com o comando `composer require piggly/php-encryption`. Recomendamos que, após a instalação, execute o comando `composer check-platform-reqs` para verificar se você possui as extensões necessárias para utilizar um ou vários métodos de criptografia.

### Libsodium

[](#libsodium)

> Instale de acordo com o seu sistema operacional. Os procedimentos são diferentes para Linux, Mac e Windows.

A biblioteca `Libsodium` não é nativa do PHP. Deve ser instalada manualmente para que a classe `SolidumCryto` opere corretamente. Para isso, no terminado do seu servidor, execute o seguinte comando `sudo apt-get install libsodium-dev`.

Depois, instale o gerenciador de extensões **PECL** do PHP ([veja aqui](https://www.php.net/manual/pt_BR/install.pecl.php)) com o seguinte comando `sudo apt-get install php-pear`. E, por fim, instale a extenção `libsodium` para o PHP com o comando `sudo pecl install -f libsodium` e ative-a no `php.ini` tanto na versão `cli` quanto na versão `fpm`.

> Conheça mais detalhes da Libsodium [aqui](https://github.com/jedisct1/libsodium-php).

Como utilizar?
--------------

[](#como-utilizar)

### Criptografia básica com OpenSSL

[](#criptografia-básica-com-openssl)

Utilize a classe `BasicCrypto` para criar operações básicas de criptografia. Para começar sempre gere uma chave segura e salve-a em um ambiente com `.env` ou similares. Sempre grave em um arquivo que esteja protegido contra leitura de terceiros.

Um jeito simples de gerar uma chave aleatória é utilizando a função `BasicCrypto::createKeys()`. A função irá retornar um `array` com a chave `secret_key`. Depois disso, inicialize a classe com o método `BasicCrypto::setKeys()` com a `secret_key` e utilize os métodos `BasicCrypto::encrypt()` e `BasicCrypto::descrypt()` para criptografar. Veja:

```
// Chaves
$keys = BasicCrypto::createKeys();
//
