查询

openssl_sign()函数—用法及示例

「 对数据进行签名,使用指定的私钥进行加密 」


函数名:openssl_sign()

适用版本:PHP 4 >= 4.0.4, PHP 5, PHP 7

用法:openssl_sign()函数用于对数据进行签名,使用指定的私钥进行加密。签名后的数据可以通过openssl_verify()函数进行验证。

语法: bool openssl_sign ( string $data , string &$signature , mixed $priv_key_id [, mixed $signature_alg = OPENSSL_ALGO_SHA256 ] )

参数:

  • $data:要签名的数据,可以是字符串或二进制数据。
  • $signature:签名后的数据将被存储在此变量中。
  • $priv_key_id:私钥标识符,可以是由openssl_pkey_get_private()函数返回的私钥资源,或者是PEM格式的私钥字符串。
  • $signature_alg:签名算法,默认为OPENSSL_ALGO_SHA256。可以使用openssl_get_md_methods()函数获取可用的签名算法列表。

返回值: 成功时返回true,失败时返回false。

示例:

// 加载私钥
$privateKey = openssl_pkey_get_private(file_get_contents('private_key.pem'));

// 要签名的数据
$data = "Hello, world!";

// 签名数据
if (openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA256)) {
    echo "签名成功!\n";
    echo "签名数据:" . base64_encode($signature) . "\n";
} else {
    echo "签名失败!\n";
}

// 验证签名
$publicKey = openssl_pkey_get_public(file_get_contents('public_key.pem'));
if (openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA256)) {
    echo "签名验证通过!\n";
} else {
    echo "签名验证失败!\n";
}

// 释放资源
openssl_free_key($privateKey);
openssl_free_key($publicKey);

注意事项:

  1. 私钥和公钥需要通过openssl_pkey_get_private()和openssl_pkey_get_public()函数加载。
  2. 签名算法可以根据具体需求选择,常见的算法有OPENSSL_ALGO_SHA1、OPENSSL_ALGO_SHA256等。
  3. 在实际使用中,私钥应该妥善保管,不能泄露给他人。
补充纠错
上一个函数: openssl_spki_export()函数
下一个函数: openssl_seal()函数
热门PHP函数
分享链接