SM3-PHP 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
SM3-PHP 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
SM3-PHP 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
SM3-PHP 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
SM3-PHP 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 MPL
开发语言 PHP
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 乱世之牙
适用人群 未知
收录时间 2020-08-18

软件简介

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

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (5)

加载中
表示可以更好的实现
01/06 12:44
回复
举报
请问作者是否会覆盖sm2 sm3 sm4
01/05 19:22
回复
举报
安装新版 openssl 后 sm2/3/4 已经被自动支持了 比如sm3 var_dump(openssl_digest('abc','sm3')); 即可 (要求openssl版本1.1.1及其以上)
01/05 19:32
回复
举报
谢谢
01/05 19:33
回复
举报
详情参考:https://www.php.net/manual/zh/function.openssl-get-md-methods.php 和 https://www.php.net/manual/zh/function.openssl-digest.php
01/05 21:06
回复
举报
更多评论
01/05 18:55

SM3-PHP v1.1.3 已经发布,国密标准 SM3 的原生 PHP 实现

SM3-PHP v1.1.3 已经发布,这是一个国密标准 SM3 的原生 PHP 实现。 此版本更新内容包括: 这是一个常规的稳定性更新,没有不向后兼容的变更和新特性 近期原则上不再有其他版本的更新计划 要点速览 主要修复了一个 php5.5 之前 版本 生成摘要值错误 的问题 当前 1.x 版本号不再保证 PHP 高版本的兼容性,高版本推荐使用 openssl 扩展 完善的单元测试和 ci 的可用性 更新了示例文件 更新了协议 增加了 Readme 中的徽标 详细更新日...

3
6
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2020/03/17 18:35

SM3算法设计原理

SM3密码杂凑算法的描述 SM3密码杂凑算法采用Merkle-Damgard结构,消息分组长度为512b,摘要长度256b。压缩函数状态256b,共64步操作步骤。 SM3密码杂凑算法的初始值: SM3密码杂凑算法的初始值共256b,由8个32b串联构成,具体值如下: IV=7380166f 4914b2b9 1724422d7 da8a0600 a96f30bc 163138aa e38dee4d b0fb0e4e。 SM3密码杂凑算法的常量: SM3密码杂凑算法的常量定义如下: SM3密码杂凑算法的布尔函数: SM3密码杂凑算法的...

0
0
发表了博客
2014/05/02 09:37

AES SHA SM3 MD5

AES AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。 输入:128bit 的消息分组 输出:128bit 的密文分组 密钥长度及圈数 128 10 192 12 256 14 消息 与 密钥 addroundkey//添加轮密钥 每个字节与轮密钥的对应字节进行异或运算 subbytes// 字替代 经过s盒,即对每个字节进行替换,非线性部件,16个字节采用相同的s-盒 shiftrow// 行变换 每一行按字节循环以为。第一行移动0位,第二行<<<1,.....第四行《《3 mix...

0
0
发表了博客
2018/03/23 14:48

sm1、sm2、sm3、sm4简单介绍

转自:https://blog.csdn.net/andylau00j/article/details/54427395 国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。 SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强...

0
0
发表了博客
2020/07/29 22:55

SM3加密算法开源项目推荐

来自ljgibbslf的github项目,知乎同名,欢迎star https://github.com/ljgibbslf/SM3_core 下面是项目的README SM3_core 国密 SM3 杂凑算法的硬件 IP,RTL 采用 Verilog 开发,测试平台使用 SystemVerilog 语言。 算法与标准 SM3 是中国的杂凑密码算法国家标准,SM3 算法与 SHA、MD5 等算法同属于杂凑算法,又称哈希算法,散列算法等。 SM3杂凑算法是我国自主开发的密码算法,并于2016年上升为国家标准。 SM3算法采用Merkle-Damg...

0
0
发表于大前端专区
2020/05/27 23:27

国密算法SM3与SM4简介与应用

点击上方蓝字可直接关注!方便下次阅读。如果对你有帮助,麻烦点个在看或点个赞,感谢~ 最近0基础在学习国密算法的相关应用,故此和大家分享下自己的一些经历。 程序平台: Ubuntu16.04 x64 一、国密SM3与SM4 国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,目前主要使用公开的SM2、SM3、SM4三类算法,分别是非对称算法、哈希算法和对称算法。不懂也没关系,以后别人说SM2、SM3、SM4知道它们是干啥的就行。这次...

0
0
发表了博客
2019/06/19 09:37

商密算法SM2、SM3、SM4的用途和原理

SM1对称密码 SM1 算法是分组密码算法,分组长度为128位,密钥长度都为 128 比特,算法安全保密强度及相关软硬件实现性能与 AES 相当,算法不公开,仅以IP核的形式存在于芯片中。 采用该算法已经研制了系列芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。 SM2椭圆曲线公钥密码算法 SM2算法就是ECC椭圆曲线密码机制,但在...

0
0
发表了博客
2019/02/14 16:12

关于国密算法 SM1,SM2,SM3,SM4 的笔记

关于国密算法 SM1,SM2,SM3,SM4 的笔记 摘自:https://www.cnblogs.com/TaiYangXiManYouZhe/p/4317519.html 国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。 SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256...

0
0
发表了博客
2019/08/22 00:02

SM3国密算法标准中两个实例的实现

来源于CSDN博客:https://blog.csdn.net/ErErFei/article/details/50998162 代码新增内容:在原博客的基础上,整合了各个类的方法,同时增添了SM3国密标准中的第二个案例的验证,并尝试将原代码中的缓冲区长度修改为64*2,本代码作者是在命令行里面运行通过的。如有运行问题,请各位能够反馈,互相学习; public class ren_SM3 { /*IV为256比特初始值,32个字节,修饰为静态最终变量,不可改变,比如0x80值(128)范围超过byte表...

0
0
发表了博客
2018/07/13 09:38

java sm3加密算法

java sm3加密算法实现 CreationTime--2018年7月13日09点28分 Author:Marydon 1.准备工作     所需jar包:   bcprov-jdk15on-1.59.jar   commons-lang3-3.1.jar import org.bouncycastle.crypto.digests.SM3Digest; import org.bouncycastle.crypto.macs.HMac; import org.bouncycastle.crypto.params.KeyParameter; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.pqc.math...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
5 评论
13 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部