欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php 生成簽名及驗(yàn)證簽名詳解

 更新時間:2016年10月26日 15:28:38   投稿:lqh  
這篇文章主要介紹了php 生成簽名及驗(yàn)證簽名詳解的相關(guān)資料,需要的朋友可以參考下

php 生成簽名及驗(yàn)證簽名

<?php
  /**
   * 根據(jù)原文生成簽名內(nèi)容
   *
   * @param string $data 原文內(nèi)容
   *
   * @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']; //根據(jù)實(shí)際情況鍵值可能不同
      $publicKey = $certs['cert']; //根據(jù)實(shí)際情況鍵值可能不同
      $binary_signature = "";
      if (openssl_sign($data, $binarySignature, $privateKey, OPENSSL_ALGO_SHA1)) {
        return $binarySignature;
      } else {
        return '';
      }
    } else {
      return '';
    }
  }
 
  /**
   * 驗(yàn)證簽名自己生成的是否正確
   *
   * @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;
  }
 
  /**
   * 驗(yàn)證返回的簽名是否正確
   *
   * @param string $data 要驗(yàn)證的簽名原文
   * @param string $signature 簽名內(nèi)容
   *
   * @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 默認(rèn)signature_alg參數(shù)是OPENSSL_ALGO_SHA1

  如果使用DSA加密方式需要使用OPENSSL_ALGO_DSS1參數(shù)

  signature_alg 其他參數(shù)

  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)

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • PHP使用Redis長連接的方法詳解

    PHP使用Redis長連接的方法詳解

    這篇文章主要介紹了PHP使用Redis長連接的方法,結(jié)合實(shí)例形式詳細(xì)分析php操作redis長連接的使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-02-02
  • Mysql中l(wèi)imit的用法方法詳解與注意事項(xiàng)

    Mysql中l(wèi)imit的用法方法詳解與注意事項(xiàng)

    mysql的數(shù)據(jù)一般都是用limit控制數(shù)量,它的使用方法也是需要注意的。
    2008-04-04
  • PHP 身份驗(yàn)證方面的函數(shù)

    PHP 身份驗(yàn)證方面的函數(shù)

    寫了幾個身份證方面的函數(shù),個人感覺挺有用的,特別是在網(wǎng)絡(luò)問卷調(diào)查時,對個人信息里的身份證進(jìn)行驗(yàn)證很有用,但是應(yīng)者寥寥,還是收在自己的blog里算了。
    2009-10-10
  • 詳細(xì)分析PHP 命名空間(namespace)

    詳細(xì)分析PHP 命名空間(namespace)

    這篇文章主要介紹了PHP 命名空間(namespace)的的相關(guān)資料,文中講解非常詳細(xì),實(shí)例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • php命令行用法入門實(shí)例教程

    php命令行用法入門實(shí)例教程

    這篇文章主要介紹了php命令行用法入門,以實(shí)例的形式分析了在命令行中運(yùn)行php程序的方法,非常具有實(shí)用價值,需要的朋友可以參考下
    2014-10-10
  • php將時間差轉(zhuǎn)換為字符串提示

    php將時間差轉(zhuǎn)換為字符串提示

    通過傳入數(shù)據(jù)庫中存儲的文章發(fā)表時的UNIX時間戳,來轉(zhuǎn)化為例如 幾分鐘前,幾小時前,幾天前 這樣的提示。如微博
    2011-09-09
  • php下保存遠(yuǎn)程圖片到本地的辦法

    php下保存遠(yuǎn)程圖片到本地的辦法

    有些時候我們看到網(wǎng)絡(luò)上有一些漂亮的圖片,而又不想手動去保存下來,尤其是大量的這樣的圖片,那這個時候我們需要寫一段程序來幫助我們完成這個工作。
    2010-08-08
  • 利用Laravel事件系統(tǒng)如何實(shí)現(xiàn)登錄日志的記錄詳解

    利用Laravel事件系統(tǒng)如何實(shí)現(xiàn)登錄日志的記錄詳解

    這篇文章主要給大家介紹了利用Laravel事件系統(tǒng)如何實(shí)現(xiàn)登錄日志記錄的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • php一些公用函數(shù)的集合

    php一些公用函數(shù)的集合

    php常用公用函數(shù)
    2008-03-03
  • mysql 中InnoDB和MyISAM的區(qū)別分析小結(jié)

    mysql 中InnoDB和MyISAM的區(qū)別分析小結(jié)

    InnoDB和MyISAM是在使用MySQL最常用的兩個表類型,各有優(yōu)缺點(diǎn),視具體應(yīng)用而定?;镜牟顒e為:MyISAM類型不支持事務(wù)處理等高級處理,而InnoDB類型支持。MyISAM類型的表強(qiáng)調(diào)的是性能,其執(zhí)行數(shù)度比InnoDB類型更快,但是不提供事務(wù)支持,而InnoDB提供事務(wù)支持已經(jīng)外部鍵等高級數(shù)據(jù)庫功能。
    2008-04-04

最新評論