程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php使用openssl_verify驗證簽名實例程序

php使用openssl_verify驗證簽名實例程序

編輯:關於PHP編程

     

    代碼如下  


    <?php 
    /** 
     
    * 驗證簽名 
     
    * TobeVerified 待驗證簽名的密文 
     
    * PlainText 待驗證簽名的明文 
     
    * CertFile 簽名者公鑰證書 
     
    * return 驗證成功返回true,失敗返回false(從LastErrMsg屬性獲取失敗原因) 
     
    */
    function VerifyMsg($TobeVerified, $PlainText, $CertFile,$signature_alg=OPENSSL_ALGO_SHA1) 

      
        
    //用公鑰驗簽 
        $fp=fopen($CertFile,"r"); 
        if(!$fp) 
        { 
            
    //echo "Error Number:-10005, Error Description: ER_FIND_CERT_FAILED(找不到證書)"; 
            return false; 
        } 
        $pub_key=fread($fp,8192); 
        fclose($fp); 
        $res = openssl_get_publickey($pub_key); 
        if (1==openssl_verify($PlainText,pack("H" . strlen($TobeVerified), $TobeVerified) , $res,$signature_alg)) 
        { 
            
    //print("www.111cn.net提示您:驗證成功"." <br>"); 
            return true; 
        } 
        else
        { 
            
    //echo "Error Number:-10021, Error Description: ER_VERIFY_ERROR(驗簽失敗)|".openssl_error_string(); 
            return false; 
        } 
      

      
    ?>

      openssl_verify 可能有三個返回值1,0,-1,只有返回1表示驗證簽名成功。

      $signature_alg 默認OPENSSL_ALGO_SHA1 ,如果是DSA加密要設置成OPENSSL_ALGO_DSS1

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved