1. Go to this page and download the library: Download maymeow/cryptography 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/ */
maymeow / cryptography example snippets
// Option 1: Use RSA for AES hybrid encryption (current limitation)
$rsaParams = new RSAParameters();
$rsaConfig = [
'private_key_type' => OPENSSL_KEYTYPE_RSA,
'private_key_bits' => 2048
];
$rsaParams->generateKeys($passphrase, $rsaConfig);
$aes = new AESCryptoServiceProvider();
$sealed = $aes->seal($plaintext, $rsaParams);
// Option 2: Explicit RSA for direct encryption
$rsa = new RSACryptoServiceProvider();
$rsa->setParameters($rsaParams);
$encrypted = $rsa->encrypt($plaintext);
// Dedicated EC classes for explicit EC usage
$ecParams = new ECParameters();
$ecCrypto = new ECCryptoServiceProvider();
$csp = new AESCryptoServiceProvider();
$csp->generateIV();
$key = $csp->generateKey();
$plainText = "This is going to be encrypted!";
$encryptedText= $csp->encrypt($plainText);
$csp2 = new AESCryptoServiceProvider();
$csp2->setKey($key);
$decryptedText = $csp2->decrypt($encryptedText);
$plainText = "This is going to be signed!";
$parameters = new RSAParameters();
$parameters->generateKeys("passphrase"); // Now generates EC keys by default
$crypto = new RSACryptoServiceProvider();
$crypto->setParameters($parameters);
// Signing and verification work with both RSA and EC keys
$signature = $crypto->sign($plainText, "passphrase", "salt");
$isValid = $crypto->verify($plainText, $signature); // true
$plainText = "This is going to be encrypted!";
$parameters = new RSAParameters();
// Explicitly configure RSA for encryption
$rsaConfig = [
'private_key_type' => OPENSSL_KEYTYPE_RSA,
'private_key_bits' => 2048
];
$parameters->generateKeys("passphrase", $rsaConfig, "salt");
$rsa = new RSACryptoServiceProvider();
$rsa->setParameters($parameters);
$encryptedText = $rsa->encrypt($plainText);
$decryptedText = $rsa->decrypt($encryptedText, "passphrase", "salt");
// Current: Use RSA for hybrid encryption
$rsaParams = new RSAParameters();
$rsaConfig = ['private_key_type' => OPENSSL_KEYTYPE_RSA, 'private_key_bits' => 2048];
$rsaParams->generateKeys("passphrase", $rsaConfig, "salt");
$aes = new AESCryptoServiceProvider();
$sealed = $aes->seal($plainText, $rsaParams, humanReadableData: true);
$opened = $aes->open($sealed[1], $sealed[0], $rsaParams, "passphrase", "salt");
$ecParams = new ECParameters();
$ecParams->generateKeys("passphrase"); // Always EC
$ec = new ECCryptoServiceProvider();
$ec->setParameters($ecParams);
// Only signing/verification available (no direct encryption)
$signature = $ec->sign($data, "passphrase", "salt");
$isValid = $ec->verify($data, $signature);
$parameters = new RSAParameters();
$parameters->generateKeys("passphrase", null, "salt"); // Uses EC by default
$locator = new TestingParametersLocator();
$writer = new RsaParametersWriter($locator);
$writer->write($parameters, privateKeyPass: "passphrase", salt: "salt");
$reader = new RsaParametersReader($locator);
$parameters2 = $reader->read();
$csp2 = new RSACryptoServiceProvider();
$csp2->setParameters($parameters2);
$p = new Maymeow\Cryptography\CryptoKey();
$p->getCryptograhicKey($password, $salt);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.