defuse/php-encryption — це бібліотека, яку можна використовувати для шифрування та дешифрування даних. Запуск і налаштування досить прості, щоб почати шифрування та дешифрування даних. У них є чудовий посібник, який допомагає пояснити основи використання бібліотеки, а також важливі питання безпеки, пов’язані із шифруванням.
Встановлення просте за допомогою composer.
composer require defuse/php-encryption
Потім вам потрібно згенерувати ключ шифрування.
vendor/bin/generate-defuse-key
Це видасть ключ, який вам потрібно зберегти в безпеці. Ви можете зберегти ключ у вашому app/config/config.php файлі в масиві внизу файлу. Хоча це не ідеальне місце, але принаймні щось.
app/config/config.php
Тепер, коли у вас є бібліотека та ключ шифрування, ви можете почати шифрування та дешифрування даних.
use Defuse\Crypto\Crypto; use Defuse\Crypto\Key; /* * Встановіть у вашому bootstrap або public/index.php файлі */ // Метод шифрування Flight::map('encrypt', function($raw_data) { $encryption_key = /* $config['encryption_key'] або file_get_contents з того, де ви помістили ключ */; return Crypto::encrypt($raw_data, Key::loadFromAsciiSafeString($encryption_key)); }); // Метод дешифрування Flight::map('decrypt', function($encrypted_data) { $encryption_key = /* $config['encryption_key'] або file_get_contents з того, де ви помістили ключ */; try { $raw_data = Crypto::decrypt($encrypted_data, Key::loadFromAsciiSafeString($encryption_key)); } catch (Defuse\Crypto\Exception\WrongKeyOrModifiedCiphertextException $ex) { // Атака! Або був завантажений неправильний ключ, або шифротекст було // змінено з моменту його створення — або пошкоджено в базі даних, або // навмисно змінено Евой, яка намагається здійснити атаку. // ... обробіть цей випадок таким чином, як це підходить для вашого застосунку ... } return $raw_data; }); Flight::route('/encrypt', function() { $encrypted_data = Flight::encrypt('Це секрет'); echo $encrypted_data; }); Flight::route('/decrypt', function() { $encrypted_data = '...'; // Отримати зашифровані дані звідкись $decrypted_data = Flight::decrypt($encrypted_data); echo $decrypted_data; });