W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)
openssl_sign — 生成簽名
openssl_sign(
string $data,
string &$signature,
OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key,
string|int $algorithm = OPENSSL_ALGO_SHA1
): bool
openssl_sign() 計(jì)算 通過(guò)生成加密來(lái)指定 使用與 關(guān)聯(lián)的私鑰進(jìn)行數(shù)字簽名。請(qǐng)注意,數(shù)據(jù)本身是 未加密。dataprivate_key
data
要簽名的數(shù)據(jù)字符串
signature
如果調(diào)用成功,則以 返回簽名。signature
private_key
OpenSSLAsymmetricKey - 由 openssl_get_privatekey() 返回的密鑰
string - PEM 格式的密鑰
algorithm
int - 這些簽名算法之一。
string - 由 openssl_get_md_methods() 示例返回的有效字符串,“sha256WithRSAEncryption”或“sha384”。
成功時(shí)返回 true, 或者在失敗時(shí)返回 false。
版本 | 說(shuō)明 |
---|---|
8.0.0 | private_key 現(xiàn)在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 實(shí)例; 以前,已接受 OR 類型的資源。OpenSSL key OpenSSL X.509 |
示例 #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);
?>
示例 #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);
?>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: