要在 PHP 中实现 SM2 签名,可以使用一些开源库,如 `php-gmssl`。以下是一个简单的示例,展示如何在 PHP 中生成 SM2 密钥对、进行签名和验证签名:
1. 安装依赖
首先,确保你已经安装了 PHP 和 OpenSSL 扩展。然后使用 Composer 安装 `php-gmssl` 库:
```sh
composer require yuansir/php-gmssl
```
2. 生成密钥对
使用 `php-gmssl` 库生成 SM2 密钥对:
```php
<?php
require 'vendor/autoload.php';
use Yuansir\GmSSL\SM2;
// 生成密钥对
$keyPair = SM2::generateKeyPair();
// 导出公钥和私钥
$publicKey = $keyPair->getPublicKey();
$privateKey = $keyPair->getPrivateKey();
echo "Public Key: " . $publicKey . PHP_EOL;
echo "Private Key: " . $privateKey . PHP_EOL;
?>
```
3. 签名和验证签名
使用生成的密钥对对数据进行签名和验证签名:
```php
<?php
require 'vendor/autoload.php';
use Yuansir\GmSSL\SM2;
$data = 'Hello, SM2!';
// 从上一步生成的公钥和私钥
$publicKey = '...';
$privateKey = '...';
// 签名
$signature = SM2::sign($data, $privateKey);
echo "Signature: " . base64_encode($signature) . PHP_EOL;
// 验证签名
$isValid = SM2::verify($data, $signature, $publicKey);
echo "Verification result: " . ($isValid ? 'valid' : 'invalid') . PHP_EOL;
?>
```