PHP openssl_sign OpenSSL 函数

  • 定义和用法

    openssl_sign - 生成签名
  • 版本支持

    PHP4 PHP5 PHP7
    支持 支持 支持
  • 语法

    openssl_sign( string $data , string &$signature , mixed $priv_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA1 ] )
    openssl_sign() 通过使用与priv_key_id关联的私钥生成加密数字签名,为指定的数据输入签名。 请注意,数据本身未加密。
  • 参数

    参数 必需的 描述
    data 您希望签名的数据字符串
    signature 如果调用成功,则以签名形式返回签名。
    priv_key_id 资源 - 一个由openssl_get_privatekey()返回的密钥。 或者 字符串 - PEM格式的密钥
    signature_alg int- 这些签名算法之一。 string - 由 openssl_get_md_methods() 示例返回的有效字符串 “ sha256WithRSAEncryption”或“ sha384”。
  • 返回值

    成功时返回 TRUE, 或者在失败时返回 FALSE。
  • 示例

    //data you want to sign
    $data = 'my data';
    
    //create new private and public key
    $new_key_pair = openssl_pkey_new(array(
            "private_key_bits" => 2048,
            "private_key_type" => OPENSSL_KEYTYPE_RSA,
    ));
    openssl_pkey_export($new_key_pair, $private_key_pem);
    
    $details = openssl_pkey_get_details($new_key_pair);
    $public_key_pem = $details['key'];
    
    //create signature
    openssl_sign($data, $signature, $private_key_pem, OPENSSL_ALGO_SHA256);
    
    //save for later
    file_put_contents('private_key.pem', $private_key_pem);
    file_put_contents('public_key.pem', $public_key_pem);
    file_put_contents('signature.dat', $signature);
    
    //verify signature
    $r = openssl_verify($data, $signature, $public_key_pem, "sha256WithRSAEncryption");
    var_dump($r);
    
  • 相关页面

    openssl_verify() - 验证签名