php 国密sm2如何验签
时间: 2023-11-21 09:43:06 浏览: 52
在 PHP 中使用国密 SM2 进行验签,可以按照以下步骤:
1. 从传入的数据中获取需要验签的原文和签名值。
2. 使用 OpenSSL 扩展中的 `openssl_pkey_get_public()` 函数加载公钥。例如:
```php
$publicKey = openssl_pkey_get_public('file:///path/to/public.key');
```
3. 使用 `openssl_verify()` 函数进行验签。该函数的第一个参数是需要验签的原文,第二个参数是签名值,第三个参数是公钥。例如:
```php
$originalData = '需要验签的原文';
$signature = '签名值';
$result = openssl_verify($originalData, base64_decode($signature), $publicKey, OPENSSL_ALGO_SM2);
```
4. 验证结果会返回一个整数值,如果值为 1,则表示验签成功,否则为验签失败。
完整的验签代码示例:
```php
$publicKey = openssl_pkey_get_public('file:///path/to/public.key');
$originalData = '需要验签的原文';
$signature = '签名值';
$result = openssl_verify($originalData, base64_decode($signature), $publicKey, OPENSSL_ALGO_SM2);
if ($result === 1) {
echo '验签成功';
} else {
echo '验签失败';
}
```