亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

淺談PHP SHA1withRSA加密生成簽名及驗簽

2024-05-05 00:07:32
字體:
來源:轉載
供稿:網友

最近公司對接XX第三方支付平臺的代付業務,由于對方公司只有JAVA的demo,所以只能根據文檔自己整合PHP的簽名加密,網上找過幾個方法,踩到各種各樣的坑,還好最后算是搞定了,話不多說,代碼分享出來。

業務要求:每個簽名組裝的內容是按字段名的字典順序升序排序連接的

先組裝需要簽名的內容:

/**   * 拼接需要簽名的內容   * Author: Tao.   *   * @param array $data 需簽名的字段內容   *    * @return string   */     public static function getSign($data)  {    foreach ($data as $k => $v) {      $Parameters[$k] = $v;    }    //按字典序排序參數    ksort($Parameters);    $sign = '';    foreach ($Parameters as $k => $v) {      $sign .= $k . "=" . $v . "&";    }    $sign = '&' . rtrim($sign, '&');    return $sign;  }

簽名字符串如下示例:
&amount=amount 值&ccy=ccy 值 &merchantId=merchantId 值¬ifyUrl=notifyUrl 值&orderId=orderId 值 &payeeAcctNo=payeeAcctNo 值(明文)。

要注意的是,根據業務需要選擇,是否在簽名內容前拼接 &符。

然后生成秘鑰簽名:

/**   * 秘鑰加密   * Author: Tao.   *   * @param string $data 之前生成好的需加密內容   * @param $key 私鑰證書位置(.pfx文件)   * @param string $pwd 證書密碼   *   * @return string   */  public static function SHA1withRSA($data, $key,$pwd)  {    openssl_pkcs12_read(file_get_contents($key), $certs, $pwd);     if (!$certs) return;    $signature = '';    openssl_sign($data, $signature, $certs['pkey']);    return bin2hex($signature);   }

于第三方公司要求轉換使用16進制,可根據需求選擇bin2hex()或base64_encode()。

這里要注意的是,根據業務需要,簽名后的內容是否要求大小寫敏感。

簽名后的內容應該是小寫的,可以使用strtoupper()轉換成大寫。

以上就是給大家整理好的私鑰加密方法。

但此業務中另要求將銀行卡號需要進行RSA公鑰加密
以下是獲取公鑰的方法:
此處是獲取對方平臺證書的公鑰(.cer文件)

/**   * 獲取公鑰   * Author: Tao.   *   * @param $path //公鑰證書位置 (.cer文件)   *   * @return mixed   * @throws /Exception   */  public static function loadCert($path)  {    $file = file_get_contents($path);    if (!$file) {      throw new /Exception('loadx509Cert::file_get_contents ERROR');    }    $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);    if (!$detail) {      throw new /Exception('loadX509Cert::openssl_pkey_get_details ERROR');    }    return $detail['key'];  }  /**   * 公鑰加密   * Author: Tao.   *    * @param $pubPath //公鑰證書位置 (.cer文件)   * @param string $bankCode //銀行卡號   *    * @return string   */  public static function rsa_encode($bankCode,$pubPath)  {    $pubkey = self::loadCert($pubPath);    $encrypt_data = '';    openssl_public_encrypt($bankCode, $encrypt_data, $pubkey);    $encrypt_data = base64_encode($encrypt_data);    return $encrypt_data;  }

你要問我為什么私鑰是bin2hex(),公鑰換了base64_encode()。我也不知道為什么,問過說是16位,但是請求簽名一直失敗,換了64成功了。對方說文檔太老了,忘記了。。根據需要選擇吧
最后回調結果驗簽

首先先將回調數據中組裝簽名字段的內容取出來,按上面的getSign()方法排序。
然后進行驗證:

/**   * 驗證返回的簽名是否正確   *   * @param string $data 要驗證的簽名原文   * @param string $signature 簽名內容   *@param $pubPath 公鑰證書位置 (.cer文件)   *   * @return bool   */  public static function verifyRespondSign($data, $signature,$pubPath)  {    $keys = self::loadCert($pubPath);    $signature = hex2bin($signature);    $ok = openssl_verify($data, $signature, $keys);    if ($ok == 1) {      return true;    }    return false;  }

以上所述是小編給大家介紹的PHP SHA1withRSA加密、簽名及驗簽的全部內容了,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91免费电影网站| 色av吧综合网| 亚洲精品国产欧美| 亚洲热线99精品视频| 日韩有码在线视频| 成人一区二区电影| 欧美一区二区三区……| 亚洲色图色老头| 亚洲免费一级电影| 97在线视频观看| 国产精品视频xxx| 成人自拍性视频| 欧美一级在线播放| 97在线精品视频| www高清在线视频日韩欧美| 91久久久亚洲精品| 668精品在线视频| 久久精品中文字幕电影| 亚洲精品欧美日韩专区| 精品亚洲永久免费精品| 欧美日在线观看| 亚洲韩国日本中文字幕| 欧美老肥婆性猛交视频| 亚洲最新中文字幕| 日韩视频免费在线观看| 亚洲韩国日本中文字幕| 日韩精品欧美激情| 日韩av在线看| 亚洲另类激情图| 一本大道久久加勒比香蕉| 国自在线精品视频| 日韩美女视频免费在线观看| 亚洲va久久久噜噜噜| 国产一区二区色| 中文亚洲视频在线| 亚洲欧洲日产国码av系列天堂| 日本精品在线视频| 欧美色视频日本高清在线观看| 久久婷婷国产麻豆91天堂| 欧美性xxxxxxxxx| 亚洲最大成人网色| 亚洲va电影大全| 欧美一级淫片aaaaaaa视频| 久久99精品久久久久久噜噜| 久久天天躁狠狠躁夜夜躁| 55夜色66夜色国产精品视频| 久久久精品欧美| 色多多国产成人永久免费网站| 国产日韩欧美日韩| 亚洲国产精品国自产拍av秋霞| 亚洲人成自拍网站| 日韩在线中文字幕| 亲爱的老师9免费观看全集电视剧| 国产精品视频区1| 色妞色视频一区二区三区四区| 浅井舞香一区二区| 中文字幕一区二区三区电影| 久久手机免费视频| 亚洲免费电影在线观看| 亚洲福利视频免费观看| 欧美成人免费全部观看天天性色| 欧美黄网免费在线观看| 欧美最猛性xxxxx亚洲精品| 久久影视电视剧凤归四时歌| 亚洲欧美综合区自拍另类| 2019中文字幕免费视频| 欧美亚洲视频在线观看| 国产成人精品久久| 中文字幕亚洲一区二区三区| 一区二区三区四区视频| 日韩电影大片中文字幕| 国产精品av电影| 国精产品一区一区三区有限在线| 国产a级全部精品| 亚洲三级av在线| 久久网福利资源网站| 国产91在线视频| 2021久久精品国产99国产精品| 九九热在线精品视频| 国产狼人综合免费视频| 国产精品国产亚洲伊人久久| 亚洲一区二区三区在线免费观看| 欧美午夜精品久久久久久久| 国产69久久精品成人| 欧美在线观看网站| 久久精品国产96久久久香蕉| 亚洲精品一区二区三区婷婷月| 久久天天躁狠狠躁夜夜爽蜜月| 国产精品一二三视频| 日韩精品亚洲精品| 国产精品欧美一区二区| 91精品国产自产在线老师啪| 色悠久久久久综合先锋影音下载| 51视频国产精品一区二区| 久久伊人精品天天| 91sao在线观看国产| 91日韩在线播放| 久久久免费精品视频| 国产精品色婷婷视频| 精品视频久久久| 国产日韩欧美中文| 国产精品入口免费视| 欧美日韩一区二区精品| 少妇高潮久久久久久潘金莲| 欧美一级淫片丝袜脚交| 国产精品av免费在线观看| 欧美日韩美女视频| 日本一区二区在线播放| 久久黄色av网站| 精品福利在线视频| 91在线免费网站| 国产精品一二三视频| 久久福利视频导航| 91精品国产高清久久久久久91| 九九热精品在线| 欧美性videos高清精品| 狠狠色噜噜狠狠狠狠97| 日本免费久久高清视频| 在线播放国产精品| 欧美电影免费观看高清完整| 久久成人精品一区二区三区| 一区二区三区回区在观看免费视频| 91av在线视频观看| 2019中文字幕全在线观看| 最近2019年中文视频免费在线观看| 亚洲国产成人爱av在线播放| 91精品国产91久久久久久久久| 精品美女国产在线| 91中文在线视频| 欧美一级免费视频| 欧美成人精品一区二区三区| 日韩中文字幕欧美| 日本一区二三区好的精华液| 亚洲a级在线观看| 久久精品国产成人精品| 欧美在线视频在线播放完整版免费观看| 亚洲欧美国产日韩天堂区| 最近2019中文字幕mv免费看| 奇门遁甲1982国语版免费观看高清| 亚洲欧美日韩中文在线| 精品日韩视频在线观看| 国产精品免费电影| 欧美人成在线视频| 欧美精品电影免费在线观看| 成人美女av在线直播| 欧美日韩亚洲天堂| 国产成人精品一区| 欧美第一页在线| 欧美激情一区二区三区高清视频| 久久影院资源站| 欧美整片在线观看| 黄网站色欧美视频| 久久97久久97精品免视看| 亚洲一区二区免费在线| 欧美性xxxxxxx| 九九九热精品免费视频观看网站| 国产精品视频久| 国产精品亚发布| 亚洲永久免费观看| 国产91网红主播在线观看| 亚洲精品国偷自产在线99热| 91久久国产婷婷一区二区| 欧美成人免费va影院高清| 国产精品综合久久久|