首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

openssl_sign

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

openssl_sign — Generate signature

描述

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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 →

扫码关注腾讯云开发者

领取腾讯云代金券