函式名稱: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";
}
注意:在實際使用中,私鑰應該妥善保管,不應該公開。公鑰可以安全地公開給其他人用於驗證數字簽名。