Download the PHP package alejandro-ap00/file-vault without Composer
On this page you can find all versions of the php package alejandro-ap00/file-vault. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download alejandro-ap00/file-vault
More information about alejandro-ap00/file-vault
Files in alejandro-ap00/file-vault
Package file-vault
Short Description A Laravel package for encrypting and decrypting files of any size
License MIT
Homepage https://github.com/alejandro-ap00/file-vault
Informations about the package file-vault
A Laravel package for encrypting and decrypting files of any size
With this package, you can encrypt and decrypt files of any size in your Laravel project. This package uses streams and CBC encryption, encrypting / decrypting a segment of data at a time.
Fork
This package is forked from soarecostin/file-vault to add Laravel 10 and 11 support.
Installation
You can install the package via composer:
You can publish the config file with:
This is the contents of the published config file:
Usage
Tutorials
For a detailed description of how to encrypt files in Laravel using this package, please see the following articles:
- Part 1: How to encrypt large files in Laravel
- Part 2: How to encrypt & upload large files to Amazon S3 in Laravel
Description
This package will automatically register a facade called FileVault
. The FileVault
facade is using the Laravel Storage
and will allow you to specify a disk
, just as you would normally do when working with Laravel Storage. All file names/paths that you will have to pass into the package encrypt/decrypt functions are relative to the disk root folder. By default, the local
disk is used, but you can either specify a different disk each time you call one of FileVault
methods, or you can set the default disk to something else, by publishing this package's config file.
If you want to change the default disk
or change the key
/cipher
used for encryption, you can publish the config file:
This is the contents of the published file:
Encrypting a file
The encrypt
method will search for a file, encrypt it and save it in the same directory, while deleting the original file.
The encryptCopy
method will search for a file, encrypt it and save it in the same directory, while preserving the original file.
Examples:
The following example will search for file.txt
into the local
disk, save the encrypted file as file.txt.enc
and delete the original file.txt
:
You can also specify a different disk
, just as you would normally with the Laravel Storage
facade:
You can also specify a different name for the encrypted file by passing in a second parameter. The following example will search for file.txt
into the local
disk, save the encrypted file as encrypted.txt
and delete the original file.txt
:
The following examples both achieve the same results as above, with the only difference that the original file is not deleted:
Decrypting a file
The decrypt
method will search for a file, decrypt it and save it in the same directory, while deleting the encrypted file.
The decryptCopy
method will search for a file, decrypt it and save it in the same directory, while preserving the encrypted file.
Examples:
The following example will search for file.txt.enc
into the local
disk, save the decrypted file as file.txt
and delete the encrypted file file.txt.enc
:
If the file that needs to be decrypted doesn't end with the .enc
extension, the decrypted file will have the .dec
extention. The following example will search for encrypted.txt
into the local
disk, save the decrypted file as encrypted.txt.dec
and delete the encrypted file encrypted.txt
:
As with the encryption, you can also specify a different disk
, just as you would normally with the Laravel Storage
facade:
You can also specify a different name for the decrypted file by passing in a second parameter. The following example will search for encrypted.txt
into the local
disk, save the decrypted file as decrypted.txt
and delete the original encrypted.txt
:
The following examples both achive the same results as above, with the only difference that the original (encrypted) file is not deleted:
Streaming a decrypted file
Sometimes you will only want to allow users to download the decrypted file, but you don't need to store the actual decrypted file. For this, you can use the streamDecrypt
function that will decrypt the file and will write it to the php://output
stream. You can use the Laravel streamDownload
method (available since 5.6) in order to generate a downloadable response:
Using a different key for each file
You may need to use different keys to encrypt your files. You can explicitly specify the key used for encryption using the key
method.
Please note that the encryption key must be 16 bytes long for the AES-128-CBC
cipher and 32 bytes long for the AES-256-CBC
cipher.
You can generate a key with the correct length (based on the cipher specified in the config file) by using the generateKey
method:
Testing
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
Credits
- Alejandro A
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
All versions of file-vault with dependencies
spatie/laravel-package-tools Version ^1.16
illuminate/contracts Version ^10.0||^11.0
ext-openssl Version *