aptika / laravel-hybrid-encryption
Hybrid RSA-OAEP + AES-256-GCM encryption package for Laravel.
Package info
github.com/Diskominfotik-Gorontalo-Prov/hybrid-encryption
pkg:composer/aptika/laravel-hybrid-encryption
Requires
- php: ^8.2
- illuminate/filesystem: ^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0|^11.0
- phpunit/phpunit: ^10.5|^11.0|^12.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Package Laravel untuk mengenkripsi data menggunakan AES-256-GCM dan RSA-OAEP.
Instalasi
composer require aptika/laravel-hybrid-encryption php artisan vendor:publish --tag=hybrid-encryption-config php artisan aptika-hybrid-encryption:generate-key-pair
Perintah terakhir membuat key pair untuk key_id=default. Private key disimpan
di disk Laravel dengan visibility private. Jangan commit atau membagikan
private key.
Pemakaian cepat
Data adalah parameter pertama. Jika key_id tidak dikirim, nilainya default.
Jika AES key tidak dikirim, package menggunakan APP_KEY Laravel.
use Aptika\HybridEncryption\Facades\HybridEncryption; $payload = HybridEncryption::encrypt('alfandy'); $data = HybridEncryption::decrypt($payload);
Dengan data array:
$payload = HybridEncryption::encrypt([ 'nik' => '750101xxxxxxxxxx', 'nama' => 'Alfandy', ]); $data = HybridEncryption::decrypt($payload);
Dengan key_id dan AES key khusus:
$payload = HybridEncryption::encrypt( 'alfandy', 'users/10/profile', env('USER_10_AES_KEY') ); $data = HybridEncryption::decrypt( $payload, 'users/10/profile', env('USER_10_AES_KEY') );
Signature utama:
encrypt(array|string $data, string $keyId = 'default', ?string $aesKey = null): string decrypt(array|string $payload, string $keyId = 'default', ?string $aesKey = null): array|string
Hasil encrypt() adalah satu string kompak berawalan AHE3.. String tersebut
tetap memuat komponen kriptografis yang diperlukan untuk decrypt, tetapi tidak
menampilkan metadata sebagai JSON.
Command utama
# Membuat key pair default php artisan aptika-hybrid-encryption:generate-key-pair # Membuat key pair untuk user/fitur tertentu php artisan aptika-hybrid-encryption:generate-key-pair users/10/profile # Membuat AES key mandiri php artisan aptika-hybrid-encryption:generate-aes-key # Mencabut key pair default php artisan aptika-hybrid-encryption:revoke-key-pair
Jika key lama akan ditimpa atau revoke ingin dilakukan tanpa konfirmasi:
php artisan aptika-hybrid-encryption:generate-key-pair default --force php artisan aptika-hybrid-encryption:revoke-key-pair default --force
Tanpa --force, operasi berisiko meminta validasi hitungan sederhana 2 + 3.
Jawaban selain 5 membatalkan perubahan.
Konfigurasi default
APTIKA_HYBRID_ENCRYPTION_RSA_BITS=3072 APTIKA_HYBRID_ENCRYPTION_KEY_DISK=local APTIKA_HYBRID_ENCRYPTION_KEY_VISIBILITY=private APTIKA_HYBRID_ENCRYPTION_PUBLIC_PREFIX=hybrid-encryption/keys/public APTIKA_HYBRID_ENCRYPTION_PRIVATE_PREFIX=hybrid-encryption/keys/private
Konfigurasi lengkap berada di config/hybrid-encryption.php.
Dokumentasi lengkap
- Panduan penggunaan, flowchart, konfigurasi, dan integrasi antar aplikasi
- Dokumentasi service, facade, command, dan exception
- Penjelasan algoritma, AES/RSA, key, dan batasan keamanan
- Referensi sumber resmi kriptografi
Testing
composer test
Lisensi
MIT