shizzo91 / crypto
从对称到混合加密,一切皆有可能。包括对称加密、非对称加密、多重非对称加密、混合加密和多重混合加密。
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
对称
用法
// encoding $password = "password"; $symmetricalCrypto = new SymmetricalCrypto($password); $encoded = $symmetricalCrypto->encode("Stringable or string"); // decoding $password = "password"; $symmetricalCrypto = new SymmetricalCrypto($password); $decode = $symmetricalCrypto->decode($encoded);
非对称或混合
创建RSA密钥
# 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
简单非对称用法
$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);
双重非对称用法
// 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"
混合用法
// 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);