1. Go to this page and download the library: Download spatie/laravel-ciphersweet library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
spatie / laravel-ciphersweet example snippets
return [
/*
* This controls which cryptographic backend will be used by CipherSweet.
* Unless you have specific compliance * Select which key provider your application will use. The default option
* is to read a string literal out of .env, but it's also possible to
* provide the key in a file or use random keys for testing.
*
* Supported: "file", "random", "string"
*/
'provider' => env('CIPHERSWEET_PROVIDER', 'string'),
/*
* Set provider-specific options here. "string" will read the key directly
* from your .env file. "file" will read the contents of the specified file
* to use as your key. "custom" points to a factory class that returns a
* provider from its `__invoke` method. Please see the docs for more details.
*/
'providers' => [
'file' => [
'path' => env('CIPHERSWEET_FILE_PATH'),
],
'string' => [
'key' => env('CIPHERSWEET_KEY'),
],
],
/*
* The provided code snippet checks whether the $permitEmpty property is set to false
* for a given field. If it is not set to false, it throws an EmptyFieldException indicating
* that the field is not defined in the row. This ensures that the code enforces the
use Spatie\LaravelCipherSweet\Contracts\CipherSweetEncrypted;
use Spatie\LaravelCipherSweet\Concerns\UsesCipherSweet;
use ParagonIE\CipherSweet\EncryptedRow;
use ParagonIE\CipherSweet\BlindIndex;
use Illuminate\Database\Eloquent\Model;
class User extends Model implements CipherSweetEncrypted
{
use UsesCipherSweet;
/**
* Encrypted Fields
*
* Each column that should be encrypted should be added below. Each column
* in the migration should be a `text` type to store the encrypted value.
*
*
class CustomBackendFactory {
public function __invoke()
{
return new CustomBackend();
}
}
class CustomBackend implements BackendInterface {
public function encrypt(string $plaintext, SymmetricKey $key, string $aad = ''): string
{
// Your logic here.
}
public function decrypt(string $ciphertext, SymmetricKey $key, string $aad = ''): string
{
// Your logic here.
}
public function blindIndexFast(string $plaintext, SymmetricKey $key, ?int $bitLength = null): string
{
// Your logic here.
}
public function blindIndexSlow(string $plaintext, SymmetricKey $key, ?int $bitLength = null, array $config = []): string
{
// Your logic here.
}
public function getIndexTypeColumn(string $tableName, string $fieldName, string $indexName): string
{
// Your logic here.
}
public function deriveKeyFromPassword(string $password, string $salt): SymmetricKey
{
// Your logic here.return new SymmetricKey('123');
}
public function doStreamDecrypt($inputFP, $outputFP, SymmetricKey $key, int $chunkSize = 8192, ?AAD $aad = null): bool
{
// Your logic here.
}
public function doStreamEncrypt($inputFP, $outputFP, SymmetricKey $key, int $chunkSize = 8192, string $salt = Constants::DUMMY_SALT, ?AAD $aad = null): bool
{
// Your logic here.
}
public function getFileEncryptionSaltOffset(): int
{
// Your logic here.
}
public function getPrefix(): string
{
// Your logic here.
}
}
class CustomKeyProviderFactory {
public function __invoke()
{
return new CustomKeyProvider();
}
}
class CustomKeyProvider implements KeyProviderInterface {
public function getSymmetricKey(): SymmetricKey
{
return new SymmetricKey(''); // Your logic here.
}
}