要在 PHP 中實現(xiàn) SM2 簽名,可以使用一些開源庫,如 `php-gmssl`。以下是一個簡單的示例,展示如何在 PHP 中生成 SM2 密鑰對、進(jìn)行簽名和驗證簽名:
1. 安裝依賴
首先,確保你已經(jīng)安裝了 PHP 和 OpenSSL 擴(kuò)展。然后使用 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();
// 導(dǎo)出公鑰和私鑰
$publicKey = $keyPair->getPublicKey();
$privateKey = $keyPair->getPrivateKey();
echo "Public Key: " . $publicKey . PHP_EOL;
echo "Private Key: " . $privateKey . PHP_EOL;
?>
```
3. 簽名和驗證簽名
使用生成的密鑰對對數(shù)據(jù)進(jìn)行簽名和驗證簽名:
```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;
?>
```