当前位置: 首页 > 工具软件 > SM3-PHP > 使用案例 >

php sms4,PHP 国密库 one-sm 1.9 发布

孙岳
2023-12-01

PHP 国密库 one-sm 1.9 已经发布。

新增

sm4 加密算法

cfb

ofb

ctr

到此已完整支持常用的  ECB/CBC/CFB/OFB/CTR 五中加解密方式。

关于one-sm

源码地址

https://github.com/lizhichao/sm

https://gitee.com/vicself/sm

安装

composer require lizhichao/one-sm

SM3签名

require __DIR__ . '/vendor/autoload.php';

$sm3 = new \OneSm\Sm3();

// 字符串签名

echo $sm3->sign('abc') . PHP_EOL;

echo $sm3->sign(str_repeat("adfas哈哈哈", 100)) . PHP_EOL;

// 文件签名

echo $sm3->signFile(__FILE__) . PHP_EOL;

性能测试

和 openssl , SM3-PHP 性能测试

结果

openssl:4901d7181a1024b8c0f59b8d3c5c6d96b4b707ad10e8ebc8ece5dc49364a3067

one-sm3:4901d7181a1024b8c0f59b8d3c5c6d96b4b707ad10e8ebc8ece5dc49364a3067

SM3-PHP:4901d7181a1024b8c0f59b8d3c5c6d96b4b707ad10e8ebc8ece5dc49364a3067

openssl time:6.3741207122803ms

one-sm3 time:8.1770420074463ms

SM3-PHP time:1738.5928630829ms

测试代码bench.php

SM4加密

use OneSm\Sm4;

require __DIR__ . '/vendor/autoload.php';

$data = str_repeat('阿斯顿发到付eeee', 160);

$str_len = strlen($data);

// md5 签名

$sign = md5($data);

// 加密key必须为16位

$key = hex2bin(md5(1));

$sm4 = new Sm4($key);

// ECB加密

$d = $sm4->enDataEcb($data);

// 加密后的长度和原数据长度一致

var_dump(strlen($d) === $str_len);

// ECB解密

$d = $sm4->deDataEcb($d);

// 解密后和原数据相等

var_dump(md5($d) === $sign);

// 初始化向量16位

$iv = hex2bin(md5(2));

// CBC加密

$d = $sm4->enDataCbc($data, $iv);

// 加密后的长度和原数据长度一致

var_dump(strlen($d)===$str_len);

// CBC解密

$d = $sm4->deDataCbc($d, $iv);

// 解密后和原数据相等

var_dump(md5($d)===$sign);

 类似资料: