首页
学习
活动
专区
工具
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 →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com