FyreEncryption is a free, open-source encryption library for PHP.
Using Composer
composer require fyre/encryption
In PHP:
use Fyre\Encryption\EncryptionManager;$encryptionManager = new EncryptionManager($container, $config);Default configuration options will be resolved from the "Encryption" key in the Config.
Autoloading
It is recommended to bind the EncryptionManager to the Container as a singleton.
$container->singleton(EncryptionManager::class);Any dependencies will be injected automatically when loading from the Container.
$encryptionManager = $container->use(EncryptionManager::class);Build
Build an Encrypter.
$optionsis an array containing configuration options.
$encrypter = $encryptionManager->build($options);Encrypter dependencies will be resolved automatically from the Container.
Clear
Clear all instances and configs.
$encryptionManager->clear();Get Config
Get an Encrypter config.
$keyis a string representing the Encrypter key.
$config = $encryptionManager->getConfig($key);Alternatively, if the $key argument is omitted an array containing all configurations will be returned.
$config = $encryptionManager->getConfig();Has Config
Determine whether an Encrypter config exists.
$keyis a string representing the Encrypter key, and will default toEncryptionManager::DEFAULT.
$hasConfig = $encryptionManager->hasConfig($key);Is Loaded
Determine whether an Encrypter instance is loaded.
$keyis a string representing the Encrypter key, and will default toEncryptionManager::DEFAULT.
$isLoaded = $encryptionManager->isLoaded($key);Set Config
Set the Encrypter config.
$keyis a string representing the Encrypter key.$optionsis an array containing configuration options.
$encryptionManager->setConfig($key, $options);Unload
Unload an Encrypter.
$keyis a string representing the Encrypter key, and will default toEncryptionManager::DEFAULT.
$encryptionManager->unload($key);Use
Load a shared Encrypter instance.
$keyis a string representing the Encrypter key, and will default toEncryptionManager::DEFAULT.
$encrypter = $encryptionManager->use($key);Encrypter dependencies will be resolved automatically from the Container.
You can load a specific encrypter by specifying the className option of the $options variable above.
Custom encrypters can be created by extending \Fyre\Encryption\Encrypter, ensuring all below methods are implemented.
Decrypt
Decrypt data.
$datais the encrypted data.$keyis a string representing the encryption key.
$decrypted = $encrypter->decrypt($data, $key);Encrypt
Encrypt data.
$datais the data to encrypt.$keyis a string representing the encryption key.
$encrypted = $encrypter->encrypt($data, $key);Generate Key
Generate an encryption key.
$key = $encrypter->generateKey();The OpenSSL encrypter can be loaded using default configuration using the "openssl" key.
$encrypter = $encryptionManager->use('openssl');You can also load the OpenSSL encrypter using custom configuration.
$optionsis an array containing configuration options.classNamemust be set to\Fyre\Encryption\Handlers\OpenSSLEncrypter::class.cipheris a string representing the cipher, and will default to "AES-256-CTR".digestis a string representing the digest, and will default to "SHA512".
$container->use(Config::class)->set('Encryption.openssl', $options);The Sodium encrypter is the default handler.
$encrypter = $encryptionManager->use();You can also load the Sodium encrypter using custom configuration.
$optionsis an array containing configuration options.classNamemust be set to\Fyre\Encryption\Handlers\SodiumEncrypter::class.blockSizeis a number representing the block size, and will default to 16.digestis a string representing the digest, and will default to "SHA512".
$container->use(Config::class)->set('Encryption.default', $options);