获取RSA加密公钥成功,但是用函数openssl_pkey_get_public()处理总是返回false不知道是怎么回事?用的是PHP开发,
这是获取到的公钥,是不是获取的公钥有问题,大神们帮忙看一下吧,下边是获取的RSA公钥和需要执行的方法
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEArF2OB8jWqEKFzeF93CL6e4wgn+qoyUkVJkyvcBqfYS5TqlJ5KbSL
V/+rigkTzvHQV1Jx+gp9EY3utsKVwBPqeI6CZHyrEXb/Bz/nmkpZN6zwEudFVomI
eauQRDJnlxhmOl9VpK5eQBXNK3DjqqF/55gVlnmUO2jaQY2ozWroUQYBb3Nh9JIm
hORjwGwUgtcCFUWRMPzeUajDOxfGbgntJOT9gbY6ToBrUr9KWaHih6QCSCqmwaVk
dCLbwgoosiIGcgNtxPs5WjQ3MJYr+zF+DxPmu0Tv9/vLQpJruuct2GXEYh6Zwu+a
SSS+sFDNyRIO6rRjiipAEyh2kPabmjlg9QIDAQAB
-----END RSA PUBLIC KEY-----
/**
* 公钥加密,银行卡号和姓名需要RSA算法加密
* @param string $data 需要加密的字符串,银行卡/姓名
* @return null|string 加密后的字符串
*/
private function publicEncrypt($data)
{
// 进行加密
$pubkey = openssl_pkey_get_public(file_get_contents(ROOT_PATH.'/'.$this->wechat->mchId.'_publicrsa.pem'));
// $pubkey是false 下面的加密流程更没法执行
$encrypt_data = '';
$encrypted = '';
$res = openssl_public_encrypt($data,$encrypt_data,$pubkey,OPENSSL_PKCS1_OAEP_PADDING);
if($res){//加密成功,返回base64编码的字符串
return base64_encode($encrypted.$encrypt_data);
}else{
return false;
}
}
PKCS#1 转 PKCS#8:
然后在尝试
仅仅看这个公钥是看不出太多问题的。可参考官网文档进行排查。