[![Latest Stable Version](https://poser.pugx.org/ch4o5/sm3-php/v)](//packagist.org/packages/ch4o5/sm3-php)
[![Latest Unstable Version](https://poser.pugx.org/ch4o5/sm3-php/v/unstable)](//packagist.org/packages/ch4o5/sm3-php)
[![License](https://poser.pugx.org/ch4o5/sm3-php/license)](//packagist.org/packages/ch4o5/sm3-php)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FDongyunLee%2FSM3-PHP.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2FDongyunLee%2FSM3-PHP?ref=badge_shield)
[![Build Status](https://travis-ci.com/DongyunLee/SM3-PHP.svg?branch=master)](https://travis-ci.com/DongyunLee/SM3-PHP)
[![Total Downloads](https://poser.pugx.org/ch4o5/sm3-php/downloads)](//packagist.org/packages/ch4o5/sm3-php)
[![Monthly Downloads](https://poser.pugx.org/ch4o5/sm3-php/d/monthly)](//packagist.org/packages/ch4o5/sm3-php)
## 前言
在开发本库的过程中,发现了 *PHP* 的三个**痛点**,敬请各位**务必**要有所了解:
1. **PHP本身对其他进制转换为二进制,由于浮点数的长度特性,会造成数据丢失**,这样就会造成运算结果的错误,需要自己重写;
2. **PHP的位运算符没法直接进行二进制变量的与或非运算**,必须得自己重写;
3. 碍于PHP本身的解释型、弱类型语言特点,**运行速度没有C快**,所以并不是最优选择。
但我们常说,看问题要有两面性。
尽管 **PHP** 本身有诸多问题,唱衰之声不断,但仍然发展到今天的生态规模,
很多时候,我们的实际性能需求并没有严格到要求我们去考量语言之间的速度差异,而重在功能的实现。
况且,上面提到的诸多痛点都已经被我封装在了这个库里,
性能的优化交给我来做,大家只要负责调用,来实现业务逻辑即可。
也希望大家来都来了,点个 **Watch** 和 **Star** ,持续关注一下。在此拜谢!
## 特点
1. 纯原生 *PHP* 代码,不额外依赖扩展项;
2. *OOP* + *Composer* ,更优雅,安装更简单;
3. 使用命名空间,防止变量名、方法名污染;
4. 引入了 *Composer* 的 *PSR-4* 规范,进行类的自动加载;
5. 使用 *PSR-12* 代码规范
5. 代码注释完整,
可配合《 [SM3密码杂凑算法](http://www.sca.gov.cn/sca/xwdt/2010-12/17/1002389/files/302a3ada057c4a73830536d03e683110.pdf) 》食用,
方便进一步学习和研究本算法。
## 要求
* 5.3 <= *php* < 7.2
> 1.x 版本之后只会作为低版本兼容,2.x 及之后版本会对 PHP 更高版本做
## 安装
本库优先支持 Composer 安装,但为了尊重使用习惯,也提供了直接下载压缩包的方式。
但不得不说,Composer 式的以组件、包为单位的项目管理方式更加现代化、方便和优雅。
### 一、源码解压(不推荐)
1. 下载压缩包
提供了 `.zip` 和 `.tar.gz` 两种格式的压缩包,
压缩包已经过 Composer 包的优化
下载地址:[https://github.com/DongyunLee/SM3-PHP/releases/latest](https://github.com/DongyunLee/SM3-PHP/releases/latest)
2. 解压到项目中的任意位置
* Windows:
使用 `winrar`/`7zip`/`Bandizip` 等工具解压
* 类Unix:
```bash
tar zxvf SM3-PHP.tar.gz
# 或者
unzip SM3-PHP.zip
```
```bash
# 打包命令
composer arch
# 或 composer run-script arch
```
### 二、*composer* 安装(强烈推荐)
1. 安装 *composer*
详见 《[如何安装 Composer](https://pkg.phpcomposer.com/#how-to-install-composer)》
2. 安装慢可更换中文镜像
由于大量先前的镜像失效,所以目前(2019-11-25)推荐使用阿里云镜像
其实配置中已经把镜像配置成了阿里云的镜像。
但有效范围毕竟只有这一个包。
开发环境中还是建议进行下全局的配置。
更换阿里云镜像方式详见拙笔 《[向先行者致敬,迎接 Composer 的未来!](https://blog.doylee.cn/composer-chinese-mirror/)》
3. `composer require ch4o5/sm3-php`
4. `composer install`
5. `composer update`
下述 `composer update` 参数作为生产环境的优化,分析、调试和阅读代码无须使用
参数简单说明:
1. `--prefer-dist`:优先构建好的包,而不是源码
2. `--no-dev`:不安装`require-dev`中定义的包,减小包的大小
3. `--no-plugins`:不安装插件
4. `--with-dependencies`:递归更新依赖的包
5. `--optimize-autoloader` / `-o`:转换 PSR-0/4 autoload 到 classmap 可以获得更快的加载支持
6. `--classmap-authoritative`: **推荐** 使用后默认开启 `-o`,并对所有类加速
## 快速开始
在根目录中的 *demo.php* 中,进行了简单地调用示范:
```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*
本文件,项目说明
## 开源许可
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FDongyunLee%2FSM3-PHP.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2FDongyunLee%2FSM3-PHP?ref=badge_large)
本项目遵从 *MPL-2.0* 许可:
* 修改源码后不可以闭源;
* 新增代码无需采用相同许可证;
* 需要对源码的修改之处,提供说明文档
---
这是一个松散的许可证,我没有给各位添加使用负担。
但请务必注意,引用时请注明来源,请勿删除文件开头的版权注释。
己所不欲,勿施于人。
我保留追究相关责任的权利。
没有合适的资源?快使用搜索试试~ 我知道了~
PHP项目-使用原生php实现国密标准SM3-优质项目.zip
共35个文件
php:16个
md:10个
yml:3个
需积分: 1 0 下载量 5 浏览量
2024-01-17
21:51:37
上传
评论
收藏 38KB ZIP 举报
温馨提示
PHP项目_使用原生php实现国密标准SM3_优质项目
资源推荐
资源详情
资源评论
收起资源包目录
PHP项目_使用原生php实现国密标准SM3_优质项目.zip (35个子文件)
PHP项目_使用原生php实现国密标准SM3_优质项目
demo.php 288B
.travis.yml 581B
_config.yml 25B
src
handler
JHandler.php 2KB
ExtendedCompression.php 5KB
SmallJHandler.php 2KB
BigJHandler.php 2KB
Substitution.php 2KB
README.md 358B
libs
WordConversion.php 8KB
README.md 265B
types
Word.php 2KB
BitString.php 5KB
README.md 154B
SM3.php 5KB
functions.php 2KB
README.md 403B
composer.json 3KB
tests
SM3Test.php 2KB
libs
WordConversionTest.php 618B
bootstrap.php 325B
phpunit.xml 56B
examples
sm3
sm3_function.php 288B
composer.json 280B
sm3_object.php 1KB
.gitignore 32B
README.md 327B
CHANGELOG.md 5KB
CNAME 13B
docs
_config.yml 26B
CNAME 13B
BaseConversion.md 558B
README.md 6KB
CODE_OF_CONDUCT.md 3KB
ReadMe.md 6KB
共 35 条
- 1
资源评论
极智视界
- 粉丝: 2w+
- 资源: 1510
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 23957825633dCar.zip
- Ruby优质学习资源和工具与案列应用场景.txt
- 阿里巴巴大数据实践之路-陈鹏宇(PDF格式).rar
- 基于医疗知识图谱的智能问答系统python实现源码+使用教程(毕业设计).zip
- 基于Python实现的医疗知识图谱的知识问答系统源码+使用教程(毕业设计).zip
- Objective-C优质学习资源和工具与案列应用场景.txt
- 基于python知识图谱医疗领域问答系统实现完整源码+使用说明(毕业设计).zip
- JavaScript优质学习资源和工具与案列应用场景.txt
- c#优质学习资源和工具与案列应用场景.txt
- 《医疗与在线教育PPT模板合集》-点亮您的演讲与教学!
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功