PHP通過(guò)pem文件校驗(yàn)簽名異常問(wèn)題解決
問(wèn)題描述:
在對(duì)接第三方支付過(guò)程中,支付成功異步回調(diào)時(shí),校驗(yàn)簽名,一直無(wú)法通過(guò)。但是在支付成功時(shí)有一個(gè)同步返回也需要校驗(yàn)簽名,用的是同樣的校驗(yàn)方法,都沒(méi)有問(wèn)題。當(dāng)把回調(diào)時(shí)傳遞的參數(shù)放在postman中,手動(dòng)發(fā)起回調(diào),也可以通過(guò)簽名校驗(yàn)
最后經(jīng)過(guò)排查,是引用秘鑰文件時(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); /** 此處可能會(huì)返回false **/ $res = openssl_get_publickey($pubKey); $result = openssl_verify($signString , base64_decode($sign), $res) === 1; openssl_free_key($res); return $result; }
上面代碼其實(shí)是沒(méi)有問(wèn)題的,問(wèn)題出在rsa_public.pem文件的內(nèi)容,秘鑰內(nèi)容都寫在同一行了,沒(méi)有按照標(biāo)準(zhǔn)的秘鑰格式書(shū)寫,如下
解決方法
第一種
按標(biāo)準(zhǔn)的秘鑰書(shū)寫格式修改秘鑰文件每行只能有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通過(guò)pem文件校驗(yàn)簽名異常的文章就介紹到這了,更多相關(guān)php em文件校驗(yàn)簽名內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
WordPress上傳圖片錯(cuò)誤:不是合法的JSON響應(yīng)解決辦法
這篇文章主要給大家介紹了關(guān)于WordPress上傳圖片錯(cuò)誤:不是合法的JSON響應(yīng)的解決辦法,WordPress提示JSON錯(cuò)誤通常是由于服務(wù)器配置或插件沖突引起的,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08set_exception_handler函數(shù)在ThinkPHP中的用法
這篇文章主要介紹了set_exception_handler函數(shù)在ThinkPHP中的用法,分析了官方給出了set_exception_handler函數(shù)用法說(shuō)明及示例,并講述了在ThinkPHP中的應(yīng)用實(shí)例,需要的朋友可以參考下2014-10-10php實(shí)現(xiàn)網(wǎng)站插件機(jī)制的方法
這些天想作一個(gè)在網(wǎng)站中實(shí)現(xiàn)插件的功能,谷歌了一下,發(fā)現(xiàn)一篇文章感覺(jué)對(duì)我?guī)椭艽螅鰜?lái)和大家分享,廢話不多說(shuō),直接帖出代碼供大家分析.2009-11-11destoon文章模塊調(diào)用企業(yè)會(huì)員資料的方法
這篇文章主要介紹了destoon文章模塊調(diào)用企業(yè)會(huì)員資料的方法,非常實(shí)用的一個(gè)技巧,需要的朋友可以參考下2014-08-08