PHP Implementation of Public Key Encryption Using openssl Extension
- 2021-09-12 00:43:03
- OfStack
As shown below:
// Generate private key
# openssl genrsa -out rsa_private_key.pem 1024
// Generate public key
# openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
Here is the sample code:
<?php
// openssl Extended detection
var_dump(extension_loaded('openssl'));
$prikey = openssl_pkey_get_private(file_get_contents('rsa_private_key.pem')); // Private key
$pubkey = openssl_pkey_get_public(file_get_contents('rsa_public_key.pem')); // Public key
// Plaintext data
$data = 'test-string!';
/**
* Possible problems: Don't know how to get public key from this private key
* Reason: PHP Adj. openssl Extension and Apache No 1 Cause to , Of course, running the program from the command line will not cause this problem
*/
// Public key encryption
$encrypt_data = '';
openssl_public_encrypt($data, $encrypt_data, $pubkey);
$encrypt_data = base64_encode($encrypt_data);
echo $encrypt_data;
echo '<br/>';
// ------------------------------------------------------------
// Private key decryption
$encrypt_data = base64_decode($encrypt_data);
openssl_private_decrypt($encrypt_data, $decrypt_data, $prikey);
var_dump($decrypt_data);