91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php如何生成簽名及驗證簽名

發布時間:2021-07-02 15:30:16 來源:億速云 閱讀:169 作者:chen 欄目:開發技術

本篇內容主要講解“php如何生成簽名及驗證簽名”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“php如何生成簽名及驗證簽名”吧!

php 生成簽名及驗證簽名

<?php
  /**
   * 根據原文生成簽名內容
   *
   * @param string $data 原文內容
   *
   * @return string
   * @author confu
   */
  function sign($data)
  {
    $filePath = 'test.p12';
    if(!file_exists($filePath)) {
      return false;
    }
 
    $pkcs12 = file_get_contents($filePath);
    if (openssl_pkcs12_read($pkcs12, $certs, '讀取證書所需要的密碼')) {
      $privateKey = $certs['pkey']; //根據實際情況鍵值可能不同
      $publicKey = $certs['cert']; //根據實際情況鍵值可能不同
      $binary_signature = "";
      if (openssl_sign($data, $binarySignature, $privateKey, OPENSSL_ALGO_SHA1)) {
        return $binarySignature;
      } else {
        return '';
      }
    } else {
      return '';
    }
  }
 
  /**
   * 驗證簽名自己生成的是否正確
   *
   * @param string $data 簽名的原文
   * @param string $signature 簽名
   *
   * @return bool
   * @author confu
   */
  function verifySign($data, $signature)
  {
    $filePath = 'test.p12';
    if(!file_exists($filePath)) {
      return false;
    }
 
    $pkcs12 = file_get_contents($filePath);
    if (openssl_pkcs12_read($pkcs12, $certs, '讀取證書所需要的密碼')) {
      $publicKey = $certs['cert'];
      $ok = openssl_verify($data, $signature, $publicKey);
      if ($ok == 1) {
        return true;
      }
    }
    return false;
  }
 
  /**
   * 驗證返回的簽名是否正確
   *
   * @param string $data 要驗證的簽名原文
   * @param string $signature 簽名內容
   *
   * @return bool
   * @author confu
   */
  function verifyRespondSign($data, $signature)
  {
    $filePath = 'allinpay-pds.pem';
    if(!file_exists($filePath)) {
      return false;
    }
 
    $fp = fopen($filePath, "r");
    $cert = fread($fp, 8192);
    fclose($fp);
    $pubkeyid = openssl_get_publickey($cert);
 
    if(!is_resource($pubkeyid)) {
      return false;
    }
 
    $ok = openssl_verify($data, $signature, $pubkeyid);
    if ($ok == 1) {
      openssl_free_key($pubkeyid);
      return true;
    }
    return false;
  }
?>

 openssl_sign 默認signature_alg參數是OPENSSL_ALGO_SHA1

  如果使用DSA加密方式需要使用OPENSSL_ALGO_DSS1參數

  signature_alg 其他參數

  OPENSSL_ALGO_DSS1 (integer)

  OPENSSL_ALGO_SHA1 (integer)

  OPENSSL_ALGO_SHA224 (integer)

  OPENSSL_ALGO_SHA256 (integer)

  OPENSSL_ALGO_SHA384 (integer)

  OPENSSL_ALGO_SHA512 (integer)

  OPENSSL_ALGO_RMD160 (integer)

  OPENSSL_ALGO_MD5 (integer)

  OPENSSL_ALGO_MD4 (integer)

  OPENSSL_ALGO_MD2 (integer)

到此,相信大家對“php如何生成簽名及驗證簽名”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

南漳县| 台湾省| 昭觉县| 昌江| 英山县| 西和县| 临城县| 喜德县| 磐安县| 金阳县| 闽清县| 阜康市| 南平市| 中西区| 丹阳市| 阿克苏市| 张家港市| 古丈县| 周至县| 西宁市| 黎城县| 莲花县| 界首市| 治县。| 宜丰县| 新泰市| 莒南县| 镇江市| 南宫市| 威宁| 嘉鱼县| 东台市| 墨玉县| 遵义市| 常山县| 曲水县| 高淳县| 涿州市| 铜梁县| 玉屏| 灵璧县|