PHP8 openssl_sign

2024-03-13 11:24 更新

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

openssl_sign — 生成簽名

說(shuō)明

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

參數(shù) 

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.0private_key現(xiàn)在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 實(shí)例; 以前,已接受 OR 類型的資源。OpenSSL keyOpenSSL 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);
?>

參見 

  • openssl_verify() - 驗(yàn)證簽名


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)