PHP
加密 | Cryptography

openssl_sign

openssl_sign

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

openssl_sign — Generate signature

描述

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

<?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

<?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 →