您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> php编程 >> 正文

php使用openssl

作者:佚名    责任编辑:admin    更新时间:2022-06-22

 

代码如下  


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