Stars: 100
Forks: 19
Pull Requests: 14
Issues: 12
Watchers: 5
Last Updated: 2022-02-11 10:31:09
国密标准SM3的原生PHP实现。
在开发本库的过程中,发现了 PHP 的三个痛点,敬请各位务必要有所了解:
但我们常说,看问题要有两面性。
尽管 PHP 本身有诸多问题,唱衰之声不断,但仍然发展到今天的生态规模, 很多时候,我们的实际性能需求并没有严格到要求我们去考量语言之间的速度差异,而重在功能的实现。
况且,上面提到的诸多痛点都已经被我封装在了这个库里, 性能的优化交给我来做,大家只要负责调用,来实现业务逻辑即可。
也希望大家来都来了,点个 Watch 和 Star ,持续关注一下。在此拜谢!
7.2 之后版本理论通过,但因为 phpunit 的版本兼容性问题,没有单元测试支撑
1.x 版本之后只会作为低版本兼容,2.x 及之后版本会对 PHP 更高版本做适配,使用更多新特性
本库优先支持 Composer 安装,但为了尊重使用习惯,也提供了直接下载压缩包的方式。 但不得不说,Composer 式的以组件、包为单位的项目管理方式更加现代化、方便和优雅。
下载压缩包
提供了 .zip
和 .tar.gz
两种格式的压缩包,
压缩包已经过 Composer 包的优化
解压到项目中的任意位置
Windows:
使用 winrar
/7zip
/Bandizip
等工具解压
类Unix:
tar zxvf SM3-PHP.tar.gz
# 或者
unzip SM3-PHP.zip
# 打包命令
composer arch
# 或 composer run-script arch
安装 composer
详见 《如何安装 Composer》
安装慢可更换中文镜像
由于大量先前的镜像失效,所以目前(2019-11-25)推荐使用阿里云镜像
其实配置中已经把镜像配置成了阿里云的镜像。 但有效范围毕竟只有这一个包。
开发环境中还是建议进行下全局的配置。
更换阿里云镜像方式详见拙笔 《向先行者致敬,迎接 Composer 的未来!》
composer require ch4o5/sm3-php
composer install
composer update
下述 composer update
参数作为生产环境的优化,分析、调试和阅读代码无须使用
参数简单说明:
--prefer-dist
:优先构建好的包,而不是源码--no-dev
:不安装require-dev
中定义的包,减小包的大小--no-plugins
:不安装插件--with-dependencies
:递归更新依赖的包--optimize-autoloader
/ -o
:转换 PSR-0/4 autoload 到 classmap 可以获得更快的加载支持--classmap-authoritative
: 推荐 使用后默认开启 -o
,并对所有类加速在根目录中的 demo.php 中,进行了简单地调用示范:
<?php
/**
* demo @ sm3-php
*
* Code BY ch4o5
* 10月. 12th 2019
* Powered by PhpStorm
*/
// 1. 引入项目中 Composer 的 autoload.php
require 'vendor/autoload.php';
// 2. 如果使用源码压缩包方式安装,则引入下面这句
// require '解压后的SM3-PHP目录/vendor/autoload.php';
// 直接调用提供的 sm3() 函数
$sm3 = sm3('abc');
// 使用它
echo $sm3;
你也可以在 examples/ 目录下找到更多的使用示例。
examples/ 示例项目
src/
源码目录,命名空间为SM3
vendor/ Composer自动加载相关
CHANGELOG.md 版本变更日志
composer.json Composer 配置文件
composer.lock Composer 锁文件,用于保证版本
demo.php 演示代码
LICENSE 开源许可证文件
README.md 本文件,项目说明
本项目遵从 MPL-2.0 许可:
这是一个松散的许可证,我没有给各位添加使用负担。
但请务必注意,引用时请注明来源,请勿删除文件开头的版权注释。
己所不欲,勿施于人。
我保留追究相关责任的权利。