萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php使用openssl

php使用openssl

 

代碼如下  


<?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

copyright © 萬盛學電腦網 all rights reserved