sm4 php
时间: 2023-08-17 07:06:05 浏览: 177
php调用sms4.zip
SM4是一种对称加密算法,可以用于加密和解密数据。在PHP中,可以使用openssl扩展库提供的函数来实现SM4加密和解密。
下面是一个SM4加密和解密的示例代码:
```php
// 加密
function sm4_encrypt($data, $key) {
$ivlen = openssl_cipher_iv_length('sm4-cbc');
$iv = openssl_random_pseudo_bytes($ivlen);
$ciphertext = openssl_encrypt($data, 'sm4-cbc', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($iv . $ciphertext);
}
// 解密
function sm4_decrypt($data, $key) {
$data = base64_decode($data);
$ivlen = openssl_cipher_iv_length('sm4-cbc');
$iv = substr($data, 0, $ivlen);
$ciphertext = substr($data, $ivlen);
return openssl_decrypt($ciphertext, 'sm4-cbc', $key, OPENSSL_RAW_DATA, $iv);
}
// 测试
$data = "hello world";
$key = "this is a key";
$encrypted = sm4_encrypt($data, $key);
$decrypted = sm4_decrypt($encrypted, $key);
echo "加密后的数据: " . $encrypted . "\n";
echo "解密后的数据: " . $decrypted . "\n";
```
这段代码中,`sm4_encrypt`函数使用`openssl_encrypt`函数对数据进行加密,然后用base64编码返回加密后的结果。`sm4_decrypt`函数则对base64解码后的数据进行解密,并返回解密后的结果。在测试中,我们使用了一个字符串作为数据,一个字符串作为密钥,然后对数据进行加密和解密。
阅读全文