获取RSA加密公钥成功,但是用函数openssl_pkey_get_public()处理总是返回false不知道是怎么回事?用的是PHP开发,
这是获取到的公钥,是不是获取的公钥有问题,大神们帮忙看一下吧。
-----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-----
试试
加我916333577
需要用openssl_pkey_get_public()函数把公钥文件转换成openssl资源,但是转换失败
下边是我要执行的方法 这个文件里边的内容就是上边获取到的公钥 ROOT_PATH.'/'.$this->wechat->mchId.'_publicrsa.pem'
/**
* 公钥加密,银行卡号和姓名需要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;
}
}
只看这段公钥是看不出什么问题的。描述一下你获取公钥的过程,以及你怎么用这个公钥的。
需要用openssl_pkey_get_public()函数把公钥文件转换成openssl资源,但是转换失败
下边是我要执行的方法 这个文件里边的内容就是上边获取到的公钥 ROOT_PATH.'/'.$this->wechat->mchId.'_publicrsa.pem'
/**
* 公钥加密,银行卡号和姓名需要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;
}
}