函数名称: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";
}
注意:在实际使用中,私钥应该妥善保管,不应该公开。公钥可以安全地公开给其他人用于验证数字签名。