在 Laravel 中加密大型文件通常需要将整个文件加载到内存中,这可能会超出 PHP 对大于几百兆文件的内存限制。Laravel 文件加密由 [此处应填写 Laravel 的开发者名称] 创建。 ercsctt ,使用 AES-256-GCM 认证加密以可配置的块处理文件,允许您加密任何大小的文件而不受内存限制。
该软件包适用于处理敏感数据的应用程序,例如医疗记录、财务文件、用户上传的文件、数据库备份和 SaaS 客户数据。
主要特点
Laravel 文件加密包含多个用于安全文件处理的功能:
- AES-256-GCM 认证加密 提供保密性和完整性验证
- 内存高效流式传输 可配置数据块大小(默认 64KB)
- 进度回调 用于跟踪加密/解密操作
- 关键轮换支持 解密过程中自动回退到之前的密钥
- Artisan 命令 用于基于命令行界面的文件加密和解密
- 辅助函数和外观 方便您在应用程序中访问
- 二进制文件格式 通过 GCM 认证标签进行篡改检测
基本加密和解密
使用
FileEncrypter
用于加密和解密文件的接口:
使用
Ercsct\FileEncryption\Facades\FileEncrypter
;// 加密文件文件加密器
::
加密文件
(
'/storage/documents/contract.pdf'
,
'/storage/encrypted/contract.enc'(英文):// 解密文件文件加密器
::
解密文件
(
'/storage/encrypted/contract.enc'
,
'/storage/documents/contract.pdf'(英文):// 获取解密后的内容,无需写入磁盘$内容
=
文件加密器
::
解密内容
(
'/storage/encrypted/contract.enc'
(英文):
该套餐还包括
decrypt_file()
用于检索解密文件内容的辅助函数。
支持大文件的流式传输
该软件包默认以 64KB 为单位处理文件,防止加密大文件时内存耗尽。您可以在已发布的配置文件中或通过环境变量配置分块大小:
文件加密块大小
=
65536
对于大于 PHP 可用内存的文件,流式传输允许执行原本会失败的加密和解密操作:
// 使用 8MB 的数据块加密 2GB 的视频文件文件加密器
::
加密文件
(
'/storage/videos/presentation.mp4'
,
'/storage/encrypted/presentation.enc'(英文):// 处理解密后的数据块,无需加载整个文件文件加密器
::
解密流
(
'/storage/encrypted/large-file.enc'
,
功能
($chunk) {
// 读取每个解密数据块后进行处理
回声
$chunk;});
要了解有关 Laravel 文件加密的更多信息并查看源代码,请访问 GitHub 存储库 该软件包以 MIT 许可证发布。





