Як шифрувати файли в 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 містить кілька функцій для безпечної роботи з файлами:

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

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

Популярні

Logomark Logotype

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

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

Logomark Logotype

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

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

Logomark Logotype

Створення CLI-додатка за допомогою Laravel та Docker

Зазирніть у світ Laravel, де потужний CLI-фреймворк відкриває нові можливості для розробки командного інтерфейсу. Дізнайтеся, як створити просту утиліту для перевірки акцій, яка працює з Docker, та які переваги це може принести у вашому проєкті!