Php/docs/function.openssl-sign
openssl_sign
(PHP 4 >= 4.0.4, PHP 5, PHP 7)
openssl_sign — Generate signature
说明
openssl_sign
( string $data
, string &$signature
, mixed $priv_key_id
[, mixed $signature_alg = OPENSSL_ALGO_SHA1
] ) : bool
openssl_sign() computes a signature for the
specified data by generating a cryptographic
digital signature using the private key associated with
priv_key_id. Note that the data itself is
not encrypted.
参数
dataThe string of data you wish to sign
signatureIf the call was successful the signature is returned in
signature.priv_key_idresource - a key, returned by openssl_get_privatekey()
string - a PEM formatted key
signature_algint - one of these Signature Algorithms.
string - a valid string returned by openssl_get_md_methods() example, "sha256WithRSAEncryption" or "sha384".
返回值
成功时返回 true, 或者在失败时返回 false。
范例
Example #1 openssl_sign() example
<?php// $data is assumed to contain the data to be signed// fetch private key from file and ready it$pkeyid = openssl_pkey_get_private("file://src/openssl-0.9.6/demos/sign/key.pem");// compute signatureopenssl_sign($data, $signature, $pkeyid);// free the key from memoryopenssl_free_key($pkeyid);?>
Example #2 openssl_sign() example
<?php//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 signatureopenssl_sign($data, $signature, $private_key_pem, OPENSSL_ALGO_SHA256);//save for laterfile_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);?>