Шифрування великих файлів у Laravel зазвичай вимагає завантаження всього файлу в пам’ять, що може перевищити ліміти PHP для файлів понад кількасот мегабайт. Laravel File Encryption, створений ercsctt, обробляє файли конфігурованими чанками з використанням AES-256-GCM автентифікованого шифрування, що дозволяє шифрувати файли будь-якого розміру без проблем із пам’яттю.
Пакет підходить для застосунків, які працюють із чутливими даними: медичними записами, фінансовими документами, файлами, що завантажують користувачі, бекапами баз даних і даними клієнтів SaaS.
Laravel File Encryption містить кілька функцій для безпечної роботи з файлами:
Використовуйте фасад FileEncrypter для шифрування й розшифрування файлів:
use Ercsctt\FileEncryption\Facades\FileEncrypter;
// Encrypt a file
FileEncrypter::encryptFile(
'/storage/documents/contract.pdf',
'/storage/encrypted/contract.enc'
);
// Decrypt a file
FileEncrypter::decryptFile(
'/storage/encrypted/contract.enc',
'/storage/documents/contract.pdf'
);
// Get decrypted contents without writing to disk
$contents = FileEncrypter::decryptedContents('/storage/encrypted/contract.enc');
Пакет також містить хелпер decrypt_file() для отримання розшифрованого вмісту файлу.
За замовчуванням пакет обробляє файли чанками по 64KB, що запобігає перевантаженню пам’яті при шифруванні великих файлів. Налаштуйте розмір чанка у опублікованому конфігураційному файлі або через змінну оточення:
FILE_ENCRYPTION_CHUNK_SIZE=65536
Для файлів, більших за доступну пам’ять PHP, стрімінг дозволяє виконувати операції шифрування й розшифрування, які в іншому разі б зазнали невдачі:
// Encrypt a 2GB video file using 8MB chunks
FileEncrypter::encryptFile(
'/storage/videos/presentation.mp4',
'/storage/encrypted/presentation.enc'
);
// Process decrypted chunks without loading the entire file
FileEncrypter::decryptedStream('/storage/encrypted/large-file.enc', function ($chunk) {
// Process each decrypted chunk as it's read
echo $chunk;
});
Детальніше про Laravel File Encryption та код дивіться в репозиторії на GitHub. Пакет поширюється під ліцензією MIT.
Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!
Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!
Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!