// 配置RSA密钥参数
$config = [
"private_key_bits" => 1024, // 注意:1024位密钥被认为不够安全
"private_key_type" => OPENSSL_KEYTYPE_RSA,
];
// 生成私钥
$res = openssl_pkey_new($config);
// 提取私钥
openssl_pkey_export($res, $privKey);
// 提取公钥
$keyDetails = openssl_pkey_get_details($res);
$pubKey = $keyDetails["key"];
// 释放资源
openssl_free_key($res);
// 输出公钥和私钥
echo "私钥:\n" . $privKey . "\n";
echo "公钥:\n" . $pubKey . "\n";
// 如果你想保存公钥和私钥到文件
file_put_contents('/www/wwwroot/替换为自己项目的路径/extend/mallbook/mallbook/private_1024.pem', $privKey);
file_put_contents('/www/wwwroot/替换为自己项目的路径/extend/mallbook/mallbook/public_1024.pem', $pubKey);
// 示例:使用SHA1WithRSA(通过OPENSSL_ALGO_SHA1)进行签名
$data = "这是一段需要签名的数据";
// 加载私钥
$privateKey = openssl_pkey_get_private("file:/www/wwwroot/替换为自己项目的路径/extend/mallbook/mallbook/private_1024.pem");
// 签名数据
openssl_sign($data, $signature, $privateKey, OPENSSL_ALGO_SHA1);
// 释放私钥资源
openssl_free_key($privateKey);
// 示例:验证签名
$publicKey = openssl_pkey_get_public("file:/www/wwwroot/替换为自己项目的路径/extend/mallbook/mallbook/public_1024.pem");
// 验证签名
$result = openssl_verify($data, $signature, $publicKey, OPENSSL_ALGO_SHA1);
// 释放公钥资源
openssl_free_key($publicKey);
if ($result === 1) {
echo "签名验证成功!";
} elseif ($result === 0) {
echo "签名验证失败!";
} else {
echo "验证时发生错误。";
}
PHP:利用OpenSSL生成RSA公私钥,签名算法为SHA1WithRSA 1024
于 2024-09-21 09:14:54 首次发布