在PHP中添加RSA/ECB/PKCS1P加密数据

在PHP中添加RSA/ECB/PKCS1P加密数据,php,rsa,padding,ecb,Php,Rsa,Padding,Ecb,我必须在PHP中使用不对称加密来加密生成的simmetric密钥(AES-256-CBC)。我获得了我应该使用的公共证书(CER文件)。 我试着这样做: $fp = fopen('publickey.cer', 'r'); $pub_key = fread($fp, filesize('publickey.cer')); fclose($fp); openssl_public_encrypt($enc, $final, $pub_key, OPENSSL_PKCS1_PADDING); Ci

我必须在PHP中使用不对称加密来加密生成的simmetric密钥(AES-256-CBC)。我获得了我应该使用的公共证书(CER文件)。 我试着这样做:

$fp = fopen('publickey.cer', 'r');
$pub_key = fread($fp, filesize('publickey.cer'));
fclose($fp);

openssl_public_encrypt($enc, $final, $pub_key, OPENSSL_PKCS1_PADDING);
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding") ;
cipher.init(Cipher.ENCRYPT_MODE, x509Certificate.getPublicKey());
return cipher.doFinal(bytes) ;
其中$enc是我的符号键

我收到的输出($final)不正确

Java中运行良好的工作代码如下所示:

$fp = fopen('publickey.cer', 'r');
$pub_key = fread($fp, filesize('publickey.cer'));
fclose($fp);

openssl_public_encrypt($enc, $final, $pub_key, OPENSSL_PKCS1_PADDING);
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding") ;
cipher.init(Cipher.ENCRYPT_MODE, x509Certificate.getPublicKey());
return cipher.doFinal(bytes) ;

如何将其转换为PHP?

您需要从证书中提取公钥-只需使用即可。您可以提供一个工作示例吗?PHP.NET没有任何适合我的示例,请放在这行:$pub\u key=openssl\u csr\u get\u public\u key($pub\u key);在加密(“openssl\u public\u encrypt”)之前,它不能正常工作。我的代码是:$fp=fopen('publickey.cer','r')$pub_key=fread($fp,filesize('publickey.cer'));fclose($fp)$pub_key=openssl_csr_get_public_key($pub_key);openssl_public_encrypt($enc、$final1、$pub_key);I获取错误:警告:openssl\u public\u encrypt():密钥参数不是有效的公钥