PHP8 openssl_sign

2024-03-13 11:24 更新

(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() 计算 通过生成加密来指定 使用与 关联的私钥进行数字签名。请注意,数据本身是 未加密。dataprivate_key

参数 

data

要签名的数据字符串

signature

如果调用成功,则以 返回签名。signature

private_key

OpenSSLAsymmetricKey - 由 openssl_get_privatekey() 返回的密钥

string - PEM 格式的密钥

algorithm

int - 这些签名算法之一。

string - 由 openssl_get_md_methods() 示例返回的有效字符串,“sha256WithRSAEncryption”或“sha384”。

返回值 

成功时返回 true, 或者在失败时返回 false。

更新日志 

版本说明
8.0.0private_key现在接受 OpenSSLAsymmetricKey 或 OpenSSLCertificate 实例; 以前,已接受 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() - 验证签名


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号