SM3-PHP

国密标准 SM3 的原生 PHP 实现
授权协议 MPL
开发语言 PHP
所属分类 程序开发、 加密/解密软件包
软件类型 开源软件
地区 国产
投 递 者 羊舌炯
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

SM3-PHP是国密标准SM3的原生PHP实现。

特点

  1. 纯原生 PHP 代码,不额外依赖扩展项;
  2. OOP + Composer ,更优雅,安装更简单;
  3. 使用命名空间,防止变量名、方法名污染;
  4. 引入了 Composer 的 PSR-4 规范,进行类的自动加载;
  5. 使用 PSR-12 代码规范
  6. 代码注释完整, 可配合《 SM3密码杂凑算法 》食用, 方便进一步学习和研究本算法。

要求

  • 5.3 <= php < 7.2

7.2 之后版本理论通过,但因为 phpunit 的版本兼容性问题,没有单元测试支撑

1.x 版本之后只会作为低版本兼容,2.x 及之后版本会对 PHP 更高版本做适配,使用更多新特性

安装

本库优先支持 Composer 安装,但为了尊重使用习惯,也提供了直接下载压缩包的方式。 但不得不说,Composer 式的以组件、包为单位的项目管理方式更加现代化、方便和优雅。

一、源码解压(不推荐)

  1. 下载压缩包

    提供了 .zip 和 .tar.gz 两种格式的压缩包, 压缩包已经过 Composer 包的优化

    下载地址:https://github.com/DongyunLee/SM3-PHP/releases/latest

  2. 解压到项目中的任意位置

    • Windows:

      使用 winrar/7zip/Bandizip 等工具解压

    • 类Unix:

      tar zxvf SM3-PHP.tar.gz
      # 或者
      unzip SM3-PHP.zip
# 打包命令
    composer arch
    
    # 或 composer run-script arch

二、composer 安装(强烈推荐)

  1. 安装 composer

    详见 《如何安装 Composer

  2. 安装慢可更换中文镜像

    由于大量先前的镜像失效,所以目前(2019-11-25)推荐使用阿里云镜像

    其实配置中已经把镜像配置成了阿里云的镜像。 但有效范围毕竟只有这一个包。

    开发环境中还是建议进行下全局的配置。

    更换阿里云镜像方式详见拙笔 《向先行者致敬,迎接 Composer 的未来!

  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
/**
 * 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 本文件,项目说明

  • 1 身份认证例子(htm5)\普通例子\网页驱动安装\SetUp.exe 7.23 MB 2017/8/10 18:21:12 2 身份认证例子(htm5)\自动登录安装包\自动登录安装包\SetUp.EXE 3.91 MB 2017/9/23 13:52:32 3 身份认证例子(htm5)\自动登录安装包\自动登录安装包(不带设置网址)\SetUp.EXE 3.9 MB 2017/9/23 13

  • 注意事项一:对于edge浏览器,html网页不支持本地测试,需要上传到站点进行测试。 注意事项二:对于HTTPS加密网站,且是firefor浏览器的话,要在设置中将我们的证书设置为信任,我们的证书名称是127.0.0.1 【普通例子】 1、普通例子演示如何在服务端获取设置在客户端加密锁中的用户名及密码 2、在测试例子之前,要先用我们的写用户名及密码工具(在“例子及源代码\身份认证例子\写用户名及密

  • 最近需求需要用到国密加密算法,搜索良久都木有PHP实现,故自己根据C代码实现了一个。 <?php class SM4 { const SM4_CK = [ 0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269, 0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9,

  • 代码如下 class SM4 { const SM4_CK = [ 0x00070e15, 0x1c232a31, 0x383f464d, 0x545b6269, 0x70777e85, 0x8c939aa1, 0xa8afb6bd, 0xc4cbd2d9, 0xe0e7eef5, 0xfc030a11, 0x181f262d, 0x343b4249, 0x50575e65, 0x6c737a81

  • 招行收款通支付对接来了个国密sm2,sm3,文档也写得不完整,给的demo还是java,哎苦了我们php的,现在直接给出php版本 $post_data = [ 'version'=>'2.0', 'merchId'=>$merchId, //商户号 'payNo'=>$payNo, 'orderId' => $orderId, 'feeAmt'=>$mo

  • GmSSL概述 GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法、SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码设备,提供符合国密规范的编程接口与命令行工具,可以用于构建PKI/CA、安全通信、数据加密等符合国密标准的安全应用。GmSSL项目是OpenSSL项目的分支,并与OpenSSL保持接口兼容。因此GmS

  • GitHub - xjfuuu/SM2_SM3_SM4Encrypt: 基于Java语言的国密SM2/SM3/SM4算法库 , 包含加密/解密、签名/验签、摘要算法的实现代码和测试方法 。 build.gradle implementation 'cn.hutool:hutool-all:5.8.4' SM4 .java import java.io.ByteArrayInputStream;

  • 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-s

  • 推荐:《PHP视频教程》 php国密SM3签名算法 代码地址 github.com/lizhichao/sm 安装composer require lizhichao/one-sm 使用require __DIR__ . '/vendor/autoload.php'; // 字符串签名 echo OneSmSm3::sign('abc') . PHP_EOL; echo OneSmSm3::sig

  • php国密算法 代码地址 sm3 字符串签名 文件签名 sm4 ecb cbc cfb ofb ctr 安装 composer require lizhichao/one-sm SM3签名 <?php require __DIR__ . '/vendor/autoload.php'; $sm3 = new \OneSm\Sm3(); // 字符串签名 echo $sm3->sign('abc

  • php实现的国密sm3签名,支持php5.6以上的版本 源码地址 https://github.com/lizhichao/sm 安装 composer require lizhichao/one-sm 使用 <?php require __DIR__ . '/vendor/autoload.php'; // 字符串签名 echo \OneSm\Sm3::sign('abc') . PHP_E

  • ext-sm3 介绍 基于密码库编写的SM3密码杂凑算法PHP扩展 特性:非对称加密 git地址:https://gitee.com/state-secret-series/ext-sm3.git 软件架构 zend 常规PHP扩展结构 安装教程 解压进入openssl-ext-sm2目录 cd ext-sm3-master phpize 检查依赖 ./configure 安装编译 mak

  • https://github.com/lpilp/phpsm2sm3sm4 sm2 sm3 sm4 算法整理链接 这位大佬已经整理好了~~~

  • 国密3加密算法一直都用的php扩展库的方式实现的。扩展库的优点就是效率高,缺点就是对php环境不太友好,每个php版本都要单独编译。 今天偶然发现个纯php版的实现,安装上用了,非常不错 https://sm3.doylee.cn/

 相关资料
  • 本文向大家介绍标准PHP的AES加密算法类,包括了标准PHP的AES加密算法类的使用技巧和注意事项,需要的朋友参考一下 分享一个标准PHP的AES加密算法类,其中mcrypt_get_block_size('rijndael-128', 'ecb');,如果在不明白原理的情况下比较容易搞错,可以通过mcrypt_list_algorithms函数查看你需要的加密算法标识。 以上就是本文所述的全部内

  • 使用php标签 通过 php 标签可以在模板里写任意的PHP语句代码,如: <php> echo 'Hello,ThinkCMF!'; $arr = ['id'=>1]; print_r($arr); </php>

  • 使用php标签 通过 php 标签可以在模板里写任意的PHP语句代码,如: <php> echo 'Hello,ThinkCMF!'; $arr = ['id'=>1]; print_r($arr); </php>

  • Php代码可以和标签在模板文件中混合使用,可以在模板文件里面书写任意的PHP语句代码 ,包括下面两种方式: 使用php标签 例如: {php}echo 'Hello,world!';{/php} 我们建议需要使用PHP代码的时候尽量采用php标签,因为原生的PHP语法可能会被配置禁用而导致解析错误。 使用原生php代码 <?php echo 'Hello,world!'; ?> 注意:php标签或

  • PHP 标准库 (SPL) 随着 PHP 一起发布,提供了一组类和接口。包含了常用的数据结构类 (堆栈,队列,堆等等),以及遍历这些数据结构的迭代器,或者你可以自己实现 SPL 接口。

  • 问题内容: 我知道PHP通常用于web开发,那里 是 没有标准的输入,但是PHP声称是可用作通用脚本语言,如果你遵循它的古怪基于web的约定。我知道PHP可以使用和打印到(或任何您想调用的东西),这很简单,但是我想知道PHP脚本如何从(特别是使用,但是任何输入函数都可以)从中获取输入,或者这甚至可能吗? 问题答案: 可以通过创建一个文件句柄来读取,然后用来读取它,例如使用一行(或者,您已经说过,使