使用 openssl 命令產生公開金鑰和私密金鑰
// 產生私密金鑰# openssl genrsa -out rsa_private_key.pem 1024// 產生公開金鑰# openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
下面是範例程式碼:
<?php// openssl 擴充檢測var_dump(extension_loaded('openssl'));$prikey = openssl_pkey_get_private(file_get_contents('rsa_private_key.pem')); //私密金鑰$pubkey = openssl_pkey_get_public(file_get_contents('rsa_public_key.pem')); //公開金鑰// 明文資料$data = 'test-string!';/** * 可能會出的問題:Don't know how to get public key from this private key * 原因:PHP 的 openssl 擴充和 Apache 的不一致導致, 當然在命令列下運行程式則不會出現此問題 */// 公開金鑰加密$encrypt_data = '';openssl_public_encrypt($data, $encrypt_data, $pubkey);$encrypt_data = base64_encode($encrypt_data);echo $encrypt_data;echo '<br/>';// ------------------------------------------------------------// 私密金鑰解密$encrypt_data = base64_decode($encrypt_data);openssl_private_decrypt($encrypt_data, $decrypt_data, $prikey);var_dump($decrypt_data);