openssl_sign
(PHP 4 >= 4.0.4, PHP 5, PHP 7)
openssl_sign — Generate signature
描述
bool openssl_sign ( string $data , string &$signature , mixed $priv_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA1 ] )
openssl_sign()data
通过使用与之关联的私钥生成加密数字签名来计算指定的签名priv_key_id
。请注意,数据本身未加密。
参数
data
您希望签署的数据串
signature
如果调用成功,签名将返回signature
。
priv_key_id
资源 - 一个键,由openssl_get_privatekey()返回
string - 一个PEM格式的密钥
signature_alg
int - 这些签名算法之一。
字符串 - 由openssl_get_md_methods()示例,“sha256WithRSAEncryption”或“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?signature
openssl_sign($data,?$signature,?$pkeyid);
//?free?the?key?from?memory
openssl_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?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() - 验证签名
← openssl_seal
openssl_spki_export_challenge →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com