1.生成私钥
-- 生成 RSA 私钥(传统格式的)
openssl genrsa -out rsa_private_key.pem 1024
-- 将传统格式的私钥转换成 PKCS#8 格式的(JAVA需要使用的私钥需要经过PKCS#8编码,PHP程序不需要,可以直接略过)
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
2.生成公钥
-- 生成 RSA 公钥(php和java都用转换前私钥生成公钥)
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
3、使用PHP加载公钥加密私钥解密
$originalData = json_encode(["加密前内容"]);
$privateKey = openssl_pkey_get_private(file_get_contents("rsa_private_key.pem")); //读取私钥内容
$publicKey = openssl_pkey_get_public(file_get_contents("rsa_public_key.pem")); //读取公钥内容
openssl_public_encrypt($originalData, $encryptedBlock, $publicKey, OPENSSL_PKCS1_OAEP_PADDING);
$str_base64 = base64_encode($encryptedBlock);
echo "加密前:" . $originalData;
echo "<br>";
echo "<br>";
echo "<br>";
echo "加密后:" . $str_base64;
echo "<br>";
echo "<br>";
echo "<br>";
openssl_private_decrypt(base64_decode($str_base64), $decryptData, $privateKey, OPENSSL_PKCS1_OAEP_PADDING);
echo "解密后:".$decryptData;
发表评论