最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP通過pem文件校驗(yàn)簽名異常問題解決

 更新時(shí)間:2023年09月16日 10:10:42   作者:whynogome  
在對接第三方支付過程中,支付成功異步回調(diào)時(shí),校驗(yàn)簽名,一直無法通過,最后經(jīng)過排查,是引用秘鑰文件時(shí),報(bào)錯(cuò)了,本文給大家分享PHP通過pem文件校驗(yàn)簽名異常問題解決方法,需要的朋友可以參考下

問題描述:

在對接第三方支付過程中,支付成功異步回調(diào)時(shí),校驗(yàn)簽名,一直無法通過。但是在支付成功時(shí)有一個(gè)同步返回也需要校驗(yàn)簽名,用的是同樣的校驗(yàn)方法,都沒有問題。當(dāng)把回調(diào)時(shí)傳遞的參數(shù)放在postman中,手動發(fā)起回調(diào),也可以通過簽名校驗(yàn)

最后經(jīng)過排查,是引用秘鑰文件時(shí),報(bào)錯(cuò)了,錯(cuò)誤代碼如下

public static function verify(array $data, $sign)
    {
        if (empty($data) || empty($sign)) {
            return "";
        }
        //code+msg+date+result,
        $code   = $data['code'] ?? '';
        $msg    = $data['msg'] ?? '';
        $date   = $data['date'] ?? '';
        $result = $data['result'] ?? '';
        $signString = $code . $msg . $date . $result;
		$mallbook_key_file = __DIR__.'rsa_public.pem';
        $pubKey = file_get_contents($mallbook_key_file);
        /** 此處可能會返回false **/
        $res = openssl_get_publickey($pubKey);
        $result =  openssl_verify($signString , base64_decode($sign), $res) === 1;
        openssl_free_key($res);
        return $result; 
    }

上面代碼其實(shí)是沒有問題的,問題出在rsa_public.pem文件的內(nèi)容,秘鑰內(nèi)容都寫在同一行了,沒有按照標(biāo)準(zhǔn)的秘鑰格式書寫,如下

在這里插入圖片描述

解決方法

第一種

按標(biāo)準(zhǔn)的秘鑰書寫格式修改秘鑰文件每行只能有64個(gè)字符,如下

在這里插入圖片描述

第二種

直接在代碼中拼接秘鑰字符串

$pubKey ='MIGfMA0GCSqGSIb3DQE***************************************
********************************************************************
***************1mwyu7RTDC8Wp7LGddnlkJsmL8masgMxA6cc9NwIDAQAB';
    $str= chunk_split($pubKey, 64, "\n");
    $key = "-----BEGIN PUBLIC KEY-----\n$str-----END PUBLIC KEY-----\n";
    $signature = base64_decode($sign);
    return openssl_verify($signString, $signature, $key, OPENSSL_ALGO_SHA1) === 1;

到此這篇關(guān)于PHP通過pem文件校驗(yàn)簽名異常的文章就介紹到這了,更多相關(guān)php em文件校驗(yàn)簽名內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

丹阳市| 铜川市| 阿坝| 临漳县| 高邑县| 西和县| 杂多县| 托里县| 井冈山市| 上饶县| 宝应县| 林芝县| 科尔| 司法| 大港区| 巴中市| 无锡市| 新河县| 阿图什市| 黎城县| 手机| 彭泽县| 赞皇县| 泰和县| 赤峰市| 西乡县| 临猗县| 黄浦区| 砀山县| 色达县| 广河县| 建始县| 紫阳县| 眉山市| 枝江市| 巴彦淖尔市| 资阳市| 新津县| 屯昌县| 沂源县| 仁布县|