查詢

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函式
分享連結