Copy code The code is as follows:
//pki encryption
/ /Using pki encryption requires opening the openssl extension
//php.ini extension = php_openssl.dll extension
/*pki mode is
* Public key encryption, private key decryption;
* Private key encryption, Public key decryption;
*/
//Private key encryption, public key decryption
//Client
//$data data
$data = 'abcd';
/ /Get the private key $priv_key_id
$priv_key_id = openssl_get_privatekey(file_get_contents('99bill-rsa.pem', r));
//Get the public key $pub_key_id
$pub_key_id = openssl_get_publickey(file_get_contents('99bill -rsa.cer', r));
//$data is first encrypted by SHA1 hash, and then encrypted by $priv_key_id private key to generate signature $signature
//$signature is the encrypted signature
//openssl_sign() encryption function, I don’t know its decryption method? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
openssl_sign($data, $signature, $priv_key_id, OPENSSL_ALGO_SHA1);
//There are also two encryption functions, and these two encryption functions have decryption methods, know
//First Type: private key encryption, public key decryption
//$data is the data to be encrypted, $crypted is the data generated by encryption, $decrypted is the data generated by decryption; $data and $decrypted have the same value
//Encrypt by $priv_key_id private key to generate $crypted;
openssl_private_encrypt($data, $crypted, $priv_key_id);
echo $crypted;
//Decrypt by $pub_key_id public key to generate $decrypted
openssl_public_decrypt($crypted, $decrypted, $pub_key_id);
//Second type: public key encryption, private key decryption
//$data The data to be encrypted, $ crypted is the data generated by encryption, $decrypted is the data generated by decryption; $data and $decrypted have the same value
//Encrypted by the $pub_key_id public key to generate $crypted;
openssl_public_encrypt($data, $crypted, $ pub_key_id);
//Decrypt through the $priv_key_id private key to generate $decrypted
openssl_private_decrypt($crypted, $decrypted, $priv_key_id);
//Note, I get the public key and private key here The key files are not corresponding
// Normally, there is a one-to-one correspondence between the public key and the private key files. Here I use Kuaiqian.
//Kuaiqian gave me the private key generation file, and the corresponding public key generation file is over there.
//Kuaiqian gave me the public key generation file, and the corresponding private key generation file is over there.
//That is, a public key generation file and a private key generation file are missing
//I have never found a one-to-one corresponding private key and public key generation file. If you find one, send me one. Thank you.
// The openssl_verify() method verifies whether the signature is correct (the data generated by private key encryption is returned and verified with the corresponding public key). This is the only case.
// $signature public key encryption generated data, $data original data, returns 1 if successful, 0 on failure, -1 on error
// $pub_key_id public key
openssl_verify($data, $signature , $pub_key_id);
//Release the private key or public key from memory
openssl_free_key($priv_key_id);
openssl_free_key($pub_key_id);
Generate private and public keys
genrsa -out private-rsa.pem
rsa -in private-rsa.pem -pubout -out public-rsa.cer
http://www.bkjia.com/PHPjc/327971.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/327971.htmlTechArticleCopy the code code as follows: ?php //pki encryption//Using pki encryption requires opening the openssl extension//php. ini extension = php_openssl.dll extension/*pki mode is* public key encryption, private key decryption;...