shizzo91 / crypto
From symmetric to hybrid encryption, everything is possible. There is symmetric encryption, asymmetric encryption, multiple asymmetric encryption, hybrid encryption and multiple hybrid encryption.
dev-master
2023-09-17 12:32 UTC
Requires
- php: >=7.3
- ext-openssl: *
- ext-zlib: *
Requires (Dev)
- phpunit/phpunit: ^9.6.11
This package is auto-updated.
Last update: 2024-09-17 14:45:47 UTC
README
Symmetrical
usage
// encoding $password = "password"; $symmetricalCrypto = new SymmetricalCrypto($password); $encoded = $symmetricalCrypto->encode("Stringable or string"); // decoding $password = "password"; $symmetricalCrypto = new SymmetricalCrypto($password); $decode = $symmetricalCrypto->decode($encoded);
Asymmetric or Hybrid
create a RSA key
# Private key generation (with passphrase) openssl req -new -nodes -sha512 -newkey rsa:2048 -keyout private.pem # Private key generation (without passphrase) openssl req -nodes -new -x509 -keyout private.pem # Public key extraction openssl rsa -in private.pem -pubout -out public.pem
usage for simple asymmetric
$privateSimpleCrypto = new PrivateSimpleCrypto( "../private-2.pem", // file or text "passphrase" // passphrase optional ); $encoded = $privateSimpleCrypto->encode("Stringable or string"); $publicSimpleCrypto = new PublicSimpleCrypto( "../public-2.pem" // file or text ); $decode = $publicSimpleCrypto->decode($encoded);
usage for double asymmetric
// simple // encoding $privateSimpleCrypto = new PrivateSimpleCrypto( "../private-2.pem", // file or text "passphrase" // passphrase optional ); $encoded = $privateSimpleCrypto->encode("Stringable or string"); // decoding $publicSimpleCrypto = new PublicSimpleCrypto( "../public-2.pem" // file or text ); $decode = $publicSimpleCrypto->decode($encoded); // double // encoding $myPrivateKey = new PrivateSimpleCrypto("../private.pem"); $receiverPublicKey = new PublicSimpleCrypto("../public-2.pem"); $doubleCrypto = new DoubleCrypto( $receiverPublicKey, $myPrivateKey ); $encoded = $doubleCrypto->encode("Stringable or string"); // decoding // with text as key $receiverPrivateKey = "-----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY-----"; $myPublicKey = "../public.pem"; $doubleCryptoReceiver = DoubleCrypto::create($myPublicKey, $receiverPrivateKey, "secret"); $decoded = $doubleCryptoReceiver->decode($encoded); var_dump($decoded); // "Stringable or string"
usage for hybrid
// simple // encoding $simpleHybridPrivate = HybridCrypto::createPrivateSimple("password", "../private.pem"); $encoded = $simpleHybridPrivate->encode("Stringable or string"); // decoding $simpleHybridPublic = HybridCrypto::createPublicSimple("password", "../public.pem"); $decoded = $simpleHybridPublic->encode($encoded); // double // encoding $doubleHybridTransmitter = HybridCrypto::createDouble( "password", "../public-2.pem", "../private.pem" ); $encoded = $doubleHybridTransmitter->encode("Stringable or string"); // decoding $doubleHybridReceiver = HybridCrypto::createDouble( "password", "../public.pem", "../private-2.pem", "passphrase" ); $decoded = $doubleHybridReceiver->encode($encoded);