openssl - 在PHP里如何使用RSA2算法验签

 平凡的如果爱166 发布于 2022-11-15 22:42

在支付宝手机App的支付成功回调签名文档里要求使用RSA2验签,但我看了openssl_verify第4个参数里没有相关的常量,我改怎么处理?

文档:https://doc.open.alipay.com/d...

3 个回答
  • 就用默认OPENSSL_ALGO_SHA1的就可以

    2022-11-15 23:12 回答
  • 扒了下,其sdk的代码,一目了然了:

            if ("RSA2" == $signType) {
                $result = (bool)openssl_verify($data, base64_decode($sign), $res, OPENSSL_ALGO_SHA256);
            } else {
                $result = (bool)openssl_verify($data, base64_decode($sign), $res);
            }
    
    2022-11-15 23:12 回答
  • 这个步骤不用你做, sdk 里面有了.


    PHP SDK 中的

    SDK_PHP/aop/AopClient.php 文件 572行.

        /** rsaCheckV1 & rsaCheckV2
         *  验证签名
         *  在使用本方法前,必须初始化AopClient且传入公钥参数。
         *  公钥是否是读取字符串还是读取文件,是根据初始化传入的值判断的。
         **/
        public function rsaCheckV1($params, $rsaPublicKeyFilePath,$signType='RSA') {
            $sign = $params['sign'];
            $params['sign_type'] = null;
            $params['sign'] = null;
            return $this->verify($this->getSignContent($params), $sign, $rsaPublicKeyFilePath,$signType);
        }
        public function rsaCheckV2($params, $rsaPublicKeyFilePath, $signType='RSA') {
            $sign = $params['sign'];
            $params['sign'] = null;
            return $this->verify($this->getSignContent($params), $sign, $rsaPublicKeyFilePath, $signType);
        }
    2022-11-15 23:12 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有