php sm2 加密方法
时间: 2023-08-28 08:16:07 浏览: 242
在 PHP 中实现 SM2 加密方法,您可以使用第三方库来简化操作。一个常用的库是 `phpseclib`,它提供了丰富的加密算法支持,包括 SM2。
首先,确保安装了 `phpseclib` 库。可以通过 Composer 进行安装:
```
composer require phpseclib/phpseclib
```
然后,您可以使用以下代码进行 SM2 加密:
```php
use phpseclib\Crypt\EC;
use phpseclib\Math\BigInteger;
// 创建一个 SM2 密钥对
function createSM2KeyPair()
{
$ec = new EC('sm2');
return $ec->createKey();
}
// 使用公钥进行 SM2 加密
function sm2Encrypt($plaintext, $publicKey)
{
$ec = new EC('sm2');
$ec->loadKey($publicKey);
return $ec->encrypt($plaintext);
}
// 使用私钥进行 SM2 解密
function sm2Decrypt($ciphertext, $privateKey)
{
$ec = new EC('sm2');
$ec->loadKey($privateKey);
return $ec->decrypt($ciphertext);
}
// 示例用法
$plaintext = 'Hello, World!';
$keyPair = createSM2KeyPair();
$publicKey = $keyPair['publicKey'];
$privateKey = $keyPair['privateKey'];
$ciphertext = sm2Encrypt($plaintext, $publicKey);
$decryptedText = sm2Decrypt($ciphertext, $privateKey);
echo "Plaintext: " . $plaintext . "\n";
echo "Ciphertext: " . base64_encode($ciphertext) . "\n";
echo "Decrypted Text: " . $decryptedText . "\n";
```
以上代码中,我们使用 `phpseclib` 的 `EC` 类来进行 SM2 密钥生成、加密和解密操作。首先,我们使用 `createSM2KeyPair` 函数生成一个 SM2 密钥对,然后使用 `sm2Encrypt` 函数使用公钥对明文进行加密,最后使用 `sm2Decrypt` 函数使用私钥对密文进行解密。
请注意,上述代码仅作为示例演示了如何在 PHP 中使用 `phpseclib` 进行 SM2 加密,实际应用中可能需要根据具体需求进行适当的修改和调整。
阅读全文