PHP openssl_verify OpenSSL 函数

  • 定义和用法

    openssl_verify - 验证签名
  • 版本支持

    PHP4 PHP5 PHP7
    支持 支持 支持
    5.2.0 添加了 signature_alg 参数。
  • 语法

    openssl_verify( string $data , string $signature , mixed $pub_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA1 ] )
    openssl_verify() 使用与pub_key_id关联的公钥验证指定数据data的签名signature是否正确。这必须是与用于签名的私钥相对应的公钥。
  • 参数

    参数 必需的 描述
    data 以前用来生成签名的数据字符串。
    signature 原始二进制字符串,通过openssl_sign()或类似的函数生成。
    pub_key_id resource - 一个密钥, 通过 openssl_get_publickey() 函数返回。 string - 一个 PEM 格式的密钥, 比如, "-----BEGIN PUBLIC KEY----- MIIBCgK..."
    signature_alg int - 以下签名算法常量之一 string - 由openssl_get_md_methods()函数返回的可用字符串,比如, "sha1WithRSAEncryption" 或者 "sha512".
  • 返回值

    如果签名正确返回 1, 签名错误返回 0, 内部发生错误则返回-1.
  • 示例

    // $data and $signature are assumed to contain the data and the signature
    
    // fetch public key from certificate and ready it
    $pubkeyid = openssl_pkey_get_public("file://src/openssl-0.9.6/demos/sign/cert.pem");
    
    // state whether signature is okay or not
    $ok = openssl_verify($data, $signature, $pubkeyid);
    if ($ok == 1) {
            echo "good";
    } elseif ($ok == 0) {
            echo "bad";
    } else {
            echo "ugly, error checking signature";
    }
    // free the key from memory
    openssl_free_key($pubkeyid);
    
  • 相关页面

    openssl_sign() - 生成签名。