1. Go to this page and download the library: Download silencenjoyer/jwe 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/ */
silencenjoyer / jwe example snippets
use Silencenjoyer\Jwe\Ciphers\Factory\Aes256GcmFactory;
use Silencenjoyer\Jwe\Decryptors\Decryptor;
use Silencenjoyer\Jwe\Encryptors\Encryptor;
use Silencenjoyer\Jwe\KeyEncapsulation\DirectKeyUnwrapper;
use Silencenjoyer\Jwe\KeyEncapsulation\DirectKeyWrapper;
use Silencenjoyer\Jwe\Keys\Key;
use Silencenjoyer\Jwe\Serializers\CompactSerializer;
// A 32-byte shared secret for A256GCM (use 64 bytes for A256CBC-HS512)
$sharedKey = Key::fromContent('a-32-byte-secret-key-goes-here!!');
$encryptor = new Encryptor(
new DirectKeyWrapper($sharedKey),
new Aes256GcmFactory(),
);
$decryptor = new Decryptor(
new DirectKeyUnwrapper($sharedKey),
new Aes256GcmFactory(),
);
$serializer = new CompactSerializer();
// Encrypt
$token = $encryptor->encrypt('Hello, World!');
$compactJwe = $serializer->serialize($token);
// eyJhbGciOiJkaXIiLCJlbmMiOiJBMjU2R0NNIn0...<iv>.<ciphertext>.<tag>
// Decrypt
$plaintext = $decryptor->decrypt($serializer->unserialize($compactJwe));
// "Hello, World!"
use Silencenjoyer\Jwe\Ciphers\Factory\Aes256GcmFactory;
use Silencenjoyer\Jwe\Decryptors\Decryptor;
use Silencenjoyer\Jwe\Encryptors\Encryptor;
use Silencenjoyer\Jwe\KeyEncapsulation\RsaKeyUnwrapper;
use Silencenjoyer\Jwe\KeyEncapsulation\RsaKeyWrapper;
use Silencenjoyer\Jwe\Keys\Key;
use Silencenjoyer\Jwe\Serializers\CompactSerializer;
$publicKey = Key::fromPath('/path/to/public.pem');
$privateKey = Key::fromPath('/path/to/private.pem');
// Sender side: encrypt with recipient's public key
$encryptor = new Encryptor(
new RsaKeyWrapper($publicKey),
new Aes256GcmFactory(),
);
$serializer = new CompactSerializer();
$compactJwe = $serializer->serialize($encryptor->encrypt('Secret message'));
// Recipient side: decrypt with own private key
$decryptor = new Decryptor(
new RsaKeyUnwrapper($privateKey),
new Aes256GcmFactory(),
);
$plaintext = $decryptor->decrypt($serializer->unserialize($compactJwe));
// "Secret message"
use Silencenjoyer\Jwe\Ciphers\Factory\Aes256CbcFactory;
use Silencenjoyer\Jwe\Ciphers\Factory\Aes256GcmFactory;
use Silencenjoyer\Jwe\Decryptors\AutoDecryptor;
use Silencenjoyer\Jwe\KeyEncapsulation\DirectKeyUnwrapper;
use Silencenjoyer\Jwe\KeyEncapsulation\RsaKeyUnwrapper;
use Silencenjoyer\Jwe\Keys\Key;
use Silencenjoyer\Jwe\Serializers\CompactSerializer;
$privateKey = Key::fromPath('/path/to/private.pem');
$sharedKey = Key::fromContent('a-32-byte-secret-key-goes-here!!');
$decryptor = (new AutoDecryptor())
// Key encapsulation algorithms
->addUnwrapper(new RsaKeyUnwrapper($privateKey)) // handles alg=RSA-OAEP
->addUnwrapper(new DirectKeyUnwrapper($sharedKey)) // handles alg=dir
// Content encryption algorithms
->addCipherFactory(new Aes256GcmFactory()) // handles enc=A256GCM
->addCipherFactory(new Aes256CbcFactory()); // handles enc=A256CBC-HS512
$serializer = new CompactSerializer();
// Works for any combination of the registered algorithms
$plaintext = $decryptor->decrypt($serializer->unserialize($compactJwe));
use Silencenjoyer\Jwe\Serializers\CompactSerializer;
$serializer = new CompactSerializer();
$compact = $serializer->serialize($token); // "header.enckey.iv.ciphertext.tag"
$token = $serializer->unserialize($compact);
use Silencenjoyer\Jwe\Keys\Key;
// From a PEM file on disk
$key = Key::fromPath('/path/to/key.pem');
// From a string (e.g. an environment variable or a secrets manager)
$key = Key::fromContent(getenv('SHARED_SECRET'));
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.