收藏
回答

企业付款到银行卡问题

获取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-----


最后一次编辑于  07-24
回答关注问题邀请回答
收藏

3 个回答

  • 微信支付技术助手1
    微信支付技术助手1
    07-24

    只看这段公钥是看不出什么问题的。描述一下你获取公钥的过程,以及你怎么用这个公钥的。

    07-24
    赞同
    回复 2
    • 苏艳山
      苏艳山
      07-26
      能快点回复我吗?
      07-26
      回复
    • 苏艳山
      苏艳山
      07-26

      需要用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;

          }

        }


      07-26
      回复
  • 凸凹凸凹
    凸凹凸凹
    09-26

    加我916333577

    09-26
    赞同
    回复
  • 苏艳山
    苏艳山
    07-26

    需要用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;

        }

      }



    07-26
    赞同
    回复