php rsa加解签

public function rsa_dec_sign($data,$verify_key,$flag,$sign=''){
        //$flag 1加签  2解签
        if (empty($verify_key)) {
            throw new Exception('empty key', 0);
        }
        if($flag==1){
            $res = openssl_get_privatekey(file_get_contents($verify_key));
            $signature = '';
            openssl_sign($data,$signature,$res);
            openssl_free_key($res);
            $result = base64_encode($signature);
        }elseif($flag==2){
            $signature=base64_decode($sign);
            $res = openssl_get_publickey(file_get_contents($verify_key));
            $result = openssl_verify($data, $signature, $res);
            openssl_free_key($res);
        }
        return $result;
    }
 /*
    * @desc rsa加解签
    * @user patti
    * @time 2020-10-27
    * @param $flag 1加签  2解签
    * $signStr:字符串参数
    * $sign 加签参数
    * */
    public  function rsa_dec_sign($signStr,$flag,$sign=''){
        if($flag==1){
            $signature = '';
            $pri_key=$this->mer_key;
            $certs=[];
            openssl_pkcs12_read(file_get_contents($pri_key),$certs,$this->mer_key_pwd);
            $resource = openssl_pkey_get_private($certs['pkey']);
            openssl_sign($signStr, $signature, $resource);
            openssl_free_key($resource);
            $result = base64_encode($signature);
        }elseif($flag==2){
            $signature=base64_decode($sign);
            $file=file_get_contents($this->sand_key);
            $cert = chunk_split(base64_encode($file), 64, "\n");
            $cert = "-----BEGIN CERTIFICATE-----\n" . $cert . "-----END CERTIFICATE-----\n";
            $res = openssl_pkey_get_public($cert);
            $detail = openssl_pkey_get_details($res);
            openssl_free_key($res);

            $resource = openssl_pkey_get_public($detail['key']);
            $result = openssl_verify($signStr, $signature, $resource);
            openssl_free_key($resource);
        }
        return $result;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值