English | 简体中文 | 繁體中文
查询

openssl_pkey_new()函数—用法及示例

「 生成数字签名,公钥可以用于验证数字签名 」


函数名称:openssl_pkey_new() 

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

函数描述:openssl_pkey_new() 生成一个新的私钥和公钥对。私钥可以用于生成数字签名,公钥可以用于验证数字签名。

用法: openssl_pkey_new ([ array $configargs ] ) : resource|false

参数:

  • configargs(可选):一个关联数组,用于设置密钥生成的一些参数。常见的参数有:
    • "private_key_bits":私钥的位数,默认为 2048。
    • "private_key_type":私钥的类型,默认为 OPENSSL_KEYTYPE_RSA。
    • "digest_alg":使用的摘要算法,默认为 "sha256"。
    • "config":openssl.cnf 配置文件路径,默认为系统默认路径。

返回值:

  • 成功生成密钥对时,返回一个 OpenSSL 密钥资源(resource),失败时返回 false。

示例:

// 生成一个新的私钥和公钥对
$privateKey = openssl_pkey_new();

if ($privateKey) {
    // 获取公钥信息
    $publicKey = openssl_pkey_get_details($privateKey)['key'];

    // 输出私钥和公钥
    echo "Private Key: " . openssl_pkey_get_private($privateKey) . "\n";
    echo "Public Key: " . $publicKey . "\n";

    // 使用私钥生成数字签名
    $data = "Hello, world!";
    openssl_sign($data, $signature, $privateKey);

    // 验证数字签名
    $isValid = openssl_verify($data, $signature, $publicKey);

    if ($isValid === 1) {
        echo "Signature is valid.\n";
    } elseif ($isValid === 0) {
        echo "Signature is invalid.\n";
    } else {
        echo "Verification error.\n";
    }
} else {
    echo "Failed to generate key pair.\n";
}

注意:在实际使用中,私钥应该妥善保管,不应该公开。公钥可以安全地公开给其他人用于验证数字签名。

补充纠错
热门PHP函数
分享链接