当前位置: 首页 > news >正文

PHP的SHA256WithRSA签名和Curl POST请求函数


getCustomerEncryptionKey - 获取加密秘钥
    /**
     * 获取加密秘钥
     * @param array $params
     * @return string
     */
    public function getCustomerEncryptionKey(array $params): string
    {
        //1.ASCII码(字典序-升序)排序
        ksort($params);
        //2.拼接成字符串string
        $string = '';
        foreach ($params as $key => $v) {
            $string .= (string)($key . '=' . $v . '&');
        }
        //3.拼接得到signTemp字符串
        $signTemp = $string . 'MerchantKey=' . self::$MerchantKey;
        //4.获取RSA私钥信息
        $absPath = dirname(__FILE__) . '/test_pri.txt';//(对接替换为自己的私钥)
        $content = file_get_contents($absPath);
        $sContent = openssl_pkey_get_private($content);
        //5.PHP-SHA256WithRSA 签名算法加密
        openssl_sign($signTemp, $signature, $sContent, "SHA256");
        openssl_free_key($sContent);
        //6.base64转换,得到SignSecret值
        return base64_encode($signature);
    }

 


getCurlRequestResult - Curl POST请求函数
    /**
     * Curl请求函数
     * @param string $url 请求地址
     * @param array $params 实体参数
     * @param int $isPost GET|POST
     * @param int $https HTTP|HTTPS
     * @param int $isJson Json|-
     * @return bool|string
     */
    public function getCurlRequestResult($url, $params,$isPost = 0,$https = 0,$isJson = 0)
    {
        $httpInfo = array();
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
        curl_setopt($ch, CURLOPT_USERAGENT,
            'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36');
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        if ($https) {
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
        }
        if ($isPost) {
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
            curl_setopt($ch, CURLOPT_URL, $url);
        } else {
            if ($params) {
                if (is_array($params)) {
                    $params = http_build_query($params);
                }
                curl_setopt($ch, CURLOPT_URL, $url . '?' . $params);
            } else {
                curl_setopt($ch, CURLOPT_URL, $url);
            }
        }
        if ($isJson) {
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/x-www-form-urlencoded; charset=utf-8',
                "Accept: application/x-www-form-urlencoded",
                'Cache-Control: no-cache',
                'Pragma: no-cache'
            ));
        }
        $response = curl_exec($ch);
        if ($response === false) {
            return false;
        }
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        $httpInfo = array_merge($httpInfo, curl_getinfo($ch));
        curl_close($ch);
        return $response;
    }

http://www.lryc.cn/news/384748.html

相关文章:

  • 5G RAN
  • Mybatis动态sql标签
  • Linux CentOS Suhosin禁用php5.6版本eval函数详细图文教程
  • 这5招底层逆袭玄学,一个人越来越厉害的秘诀
  • MySQL自学教程:1. MySQL简介与安装
  • Jenkins多stage共享同一变量方式
  • Ant design Vue 表格中显示不同的状态(多条件显示)
  • 如何借助物联网实现土壤监测与保护
  • Linux之prometheus安装和使用简介(一)
  • orcle数据表空间操作sql
  • 【Unity Android】Unity链接安卓手机调试
  • 数据结构与算法笔记:高级篇 - 概率统计:如何利用朴素贝叶斯算法过滤垃圾短信?
  • vue3中通过vditor插件实现自定义上传图片、录入echarts、脑图、markdown语法的编辑器
  • 揭示数据库内核的奥秘--手写数据库toadb开源项目
  • Grafana调整等待时间,避免Gateway timeout报错
  • MetaGPT全面指南:多代理协作框架的深入解析与应用
  • 图的关键路径算法
  • 模型情景制作-冰镇啤酒
  • 网页实现黑暗模式的几种方式
  • VMware Workstation环境下,邮件(E-Mail)服务的安装配置,并用Windows7来验证测试
  • 《信号与系统》复试建议
  • 代码随想录训练营Day45
  • NAT和内网穿透
  • android | 声明式编程!(笔记)
  • 友力科技IDC机房搬迁方案流程分享
  • 仿迪恩城市门户分类信息网discuz模板
  • Windows 注册表是什么?如何备份注册表?
  • B+树与索引解析
  • 华为认证hcna题库背诵技巧有哪些?hcna和hcia有什么区别?
  • 【常用报文状态码】