peterurk / cipher
Cipher, an easy method to encrypt and decrypt
Requires
- php: >=8.1
Requires (Dev)
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0
- dev-master
- dev-codex/review-repo-en-geef-suggesties
- dev-codex/suggesties-voor-verbetering-en-uitbreiding-repo
- dev-codex/update-repo-voor-laatste-standaarden
- dev-codex/update-readme-and-license-headers
- dev-codex/update-composer.json-and-autoload-setup
- dev-codex/update-cipher.php-with-new-encryption-logic
- dev-codex/herstel-een-bug-in-codebase
This package is not auto-updated.
Last update: 2025-06-21 20:21:36 UTC
README
A simple PHP library to encrypt and decrypt strings. The library supports AES-256-CBC
and AES-256-GCM
and requires PHP 8.1 or higher.
Installation
Install the package through Composer:
composer require peterurk/cipher
Usage
use peterurk\Cipher\Cipher; $cipher = new Cipher('YourSecretKey'); $encrypted = $cipher->encrypt('message'); $decrypted = $cipher->decrypt($encrypted);
Using environment variables
You can provide the key and cipher method through environment variables:
export CIPHER_KEY=mysecret export CIPHER_METHOD=AES-256-GCM export CIPHER_SALT=mysalt
$cipher = new Cipher();
The defaults for the cipher method, tag length and salt are configurable via constants in Cipher
.
Security considerations
AES-256-CBC
is vulnerable to tampering if you do not verify integrity. Enable the --hmac
option or pass true
as the third constructor argument to automatically append and validate an HMAC. AES-256-GCM
already provides authentication and does not need HMAC.
CLI
This repository ships with a small CLI tool. Show the help message:
bin/cipher --help
Encrypt a string:
bin/cipher --encrypt "hello" --key mysecret
Decrypt a string:
bin/cipher --decrypt "<ciphertext>" --key mysecret
File encryption
$cipher->encryptFile('input.txt', 'output.enc'); $cipher->decryptFile('output.enc', 'plain.txt');
Encrypt a file from the CLI:
bin/cipher --encrypt-file input.txt --key mysecret > output.enc
Decrypt a file from the CLI:
bin/cipher --decrypt-file output.enc --key mysecret > plain.txt
Large files are processed in chunks so they won't consume excessive memory.
Running Tests
composer install
composer test
License
Released under the MIT License.