Мне повезло с этим, используя библиотеку Openssl. Я написал библиотеку, которая включает некоторые функции шифрования и дешифрования, доступные в Openssl, чтобы, надеюсь, упростить ее.
Вот небольшой пример, который использует AES-256-CCM для шифрования и дешифрования строки с использованием 12-байтового IV :
use Encryption\Encryption;
require('../vendor/autoload.php');
$text = 'The quick brown fox jumps over the lazy dog';
$key = 'secretkey';
$encryption = Encryption::getEncryptionObject('AES-256-CCM');
$iv = $encryption->generateIv();
$encryptedText = $encryption->encrypt($text, $key, $iv, $tag);
$decryptedText = $encryption->decrypt($encryptedText, $key, $iv, $tag);
printf('Cipher : %s%s', $encryption->getName(), PHP_EOL);
printf('IV : %s%s', base64_encode($iv), PHP_EOL);
printf('IV Length: %s%s', strlen($iv), PHP_EOL);
printf('Tag : %s%s', base64_encode($tag), PHP_EOL);
printf('Encrypted: %s%s', $encryptedText, PHP_EOL);
printf('Decrypted: %s%s', $decryptedText, PHP_EOL);
Вывод:
Cipher : AES-256-CCM
IV : i925n5X6xdrKyImY
IV Length: 12
Tag : b/fl4BEDAGN5U0P40/GN7g==
Encrypted: zcfFmoRKZNxxwh4z9FGaY63bl4YXYnzSxlLFEE+e9QqsMhoJjpsJ6ALH2ho+ochS
Decrypted: The quick brown fox jumps over the lazy dog
Если вам этого достаточно, библиотека называется PHP Простое шифрование и доступна как composer упаковка .