openssl_sign
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 →