Як шифрувати файли в Laravel за допомогою AES-256-GCM і Memory-Efficient Streaming

Перекладено ШІ 0 Laravel News 04 лютого, 2026

Потрібно шифрувати великі файли в Laravel без перевантаження пам'яті? Laravel File Encryption потоково шифрує файли будь-якого розміру за допомогою AES‑256‑GCM, підтримує ротацію ключів, перевірку цілісності й відстеження прогресу — читайте далі, щоб дізнатися, як почати.

Шифрування великих файлів у Laravel зазвичай вимагає завантаження всього файлу в пам’ять, що може перевищити ліміти PHP для файлів понад кількасот мегабайт. Laravel File Encryption, створений ercsctt, обробляє файли конфігурованими чанками з використанням AES-256-GCM автентифікованого шифрування, що дозволяє шифрувати файли будь-якого розміру без проблем із пам’яттю.

Пакет підходить для застосунків, які працюють із чутливими даними: медичними записами, фінансовими документами, файлами, що завантажують користувачі, бекапами баз даних і даними клієнтів SaaS.

# Основні можливості

Laravel File Encryption містить кілька функцій для безпечної роботи з файлами:

  • AES-256-GCM автентифіковане шифрування, що забезпечує конфіденційність і перевірку цілісності
  • Економне використання пам’яті через стрімінг із налаштовуваним розміром чанків (за замовчуванням 64KB)
  • Колбеки прогресу для відстеження операцій шифрування/розшифрування
  • Підтримка ротації ключів з автоматичним відкатом до попередніх ключів під час розшифрування
  • Artisan-команди для шифрування й розшифрування файлів з CLI
  • Хелпери та фасад для зручного використання в застосунку
  • Бінарний формат файлу з виявленням підробок через теги автентифікації GCM

# Базове шифрування й розшифрування

Використовуйте фасад 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.

Популярні

Інше, що варто прочитати

19 Оновлено 01 червня, 2026

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!

10 Оновлено 01 червня, 2026

Генерація документації в Laravel за допомогою штучного інтелекту

Docudoodle — це потужний пакет для генерації документації в Laravel, який допомагає легко аналізувати вашу кодову базу та створювати документацію за допомогою обраного вами AI. Чи готові ви дізнатися, як цей інструмент може спростити вашу роботу з документуванням коду? Читайте далі!

15 Оновлено 01 червня, 2026

Простий пакет RabbitMQ для Laravel

Вам цікаво дізнатися, як спростити інтеграцію RabbitMQ у вашому Laravel-додатку? У нашій статті ми розглянемо пакет Simple RabbitMQ, який дозволяє легко налаштувати багатозʼєднання, публікувати повідомлення та обробляти черги за допомогою простого синтаксису. Читайте далі, щоб дізнатися більше!