adbario/php-encrypter

Encryption with AES-256 and HMAC-SHA256

1.0.0 2017-03-26 12:33 UTC

This package is auto-updated.

Last update: 2024-04-11 13:02:41 UTC


README

This project encrypts and decrypts the given value. It uses OpenSSL extension with AES-256 cipher for encryption and HMAC-SHA-256 for hash. The encryption and hash can use different keys.

PHP Encrypter requires PHP 5.3 or higher, OpenSSL and Multibyte String extensions.

Security Notice

As a reversible operation, encryption is not a secure solution for storing passwords. Always use hashing with salt per user for passwords.

Installation

With Composer:

composer require adbario/php-encrypter

Manual installation:

  1. Download the latest release
  2. Extract the files into your project
  3. require_once '/path/to/php-encrypter/src/Encrypter.php';
  4. If your PHP version is lower than 7, also polyfill for random_bytes() is required

Usage

Setup the encryption key:

$key = '+NeXrQhAEhW}g8gf^y)Up8hAUKpue7wb';

Change the key to your own custom random 32 character string.

Create a new encrypter instance:

$encrypter = new \Adbar\Encrypter($key);

If you wish to use a different key for hashing, you can pass it to constructor as a second parameter:

$encrypter = new \Adbar\Encrypter($key, $authKey);

Encryption

Encrypt a string:

$string = 'This is my string to encrypt.';
$encrypted = $encrypter->encryptString($string);

Encrypt other variable types with serialization:

$array = array('key' => 'value');
$encrypted = $encrypter->encrypt($array);

Decryption

Decrypt a string:

$string = $encrypter->decryptString($encrypted);

Decrypt other variable types with serialization:

$array = $encrypter->decrypt($encrypted);

License

MIT license