承接 wzhih/guomi 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

wzhih/guomi

Composer 安装命令:

composer require wzhih/guomi

包简介

国密sm2

README 文档

README

本项目由lpilp大佬以下项目fork而来

https://github.com/lpilp/phpsm2sm3sm4

注意点

  • 本项目是为了适配php5.6而做的修改,php:7.2及以上不建议使用
  • 由于官方打包的windowsphp都是32位的,所以在本项目的位运算中,会导致溢出PHP_INT_MAX内核常量

如何查看php是否32位

  1. 输出PHP_INT_SIZE,如果返回是 4 就是 32 位的,如果返回是 8 就是 64 位的
  2. 输出PHP_INT_MAX, 64 位的会返回 9223372036854775807

如何避免32位的位预算溢出问题?有两种办法

  1. 改换64位的php(线上项目估计换不了, windows也难以自己编译64位的php)
  2. 位运算改成使用gmp扩展,如以下代码示例
//以下两句代码是一样的效果
$r = gmp_intval(gmp_div(128, gmp_pow(2, 3)));//$r = 16

$r = 128 >> 3;//$r = 16

php sm2 sm3 sm4 国密算法整理

  • php版本的国密sm2的签名算法,非对称加解密算法(非对称加密刚上线,目前测试无问题,不能保证兼容其他语言,有问题可以提issues),sm3的hash, sm4的对称加解密,要求PHP7,打开gmp支持
  • 目前如果服务器配套的使用的是openssl 1.1.1x, 目前到1.1.1.l(L) ,sm3,sm4都可以直接用openssl_xxx系列函数直接实现,不必大量的代码,但不支持sm2的签名,sm2的加解密
  • 有一个sm3, sm4的比较好的代码: https://github.com/lizhichao/sm 可以使用composer安装,只是这个的ecb, cbc没有做补齐

使用(how to use)

  • composer require lpilp/guomi
  • please make sure you upgrade to Composer 2+
  • 测试是在php 7.4下做的,支持7.2及以上版本

SM2

  • 签名验签算法主体基于PHPECC算法架构,添加了sm2的椭圆参数,
  • 参考了 https://github.com/ToAnyWhere/phpsm2 童鞋的sm2验签算法,密钥生成算法
  • 添加了签名算法, 支持sm2的16进制,base64公私钥的签名,验签算法
  • 支持从文件中读取pem文件的签名,验签算法
  • 添加了sm2的非对称加密的算法,但速度一般,有待优化,不能保证兼容所有语言进行加解密,目前测试了js, python的相互加解密
  • sm2的加密解密算法在openssl 1.1.1的版本下自带的函数中暂无sm2的公钥私钥的加密函数,得自己实现,建议使用C,C++的算法,打包成PHP扩展的方式
  • 由于 openssl没有实现sm2withsm3算法,用系统函数无法实现签名及证书的自签名分发

SM3

SM4

  • 该算法直接封装使用 https://github.com/lizhichao/sm 的sm4算法, 同时该项目支持 sm3,sm4 ,可以composer安装
  • 由于sm4-ecb, sm4-cbc加密需要补齐,项目lizhichao/sm项目未做补齐操作,这里封装的时候,针对这两个算法做了补齐操作, 其他如sm4-ctr,sm4-cfb,sm4-ofb等,可以直接用
  • 在openssl 1.1.1下可使用系统的函数,已支持sm4-cbc,sm4-cfb,sm4-ctr,sm4-ecb,sm4-ofb, 详见openssl_tsm4.php

总结

wzhih/guomi 适用场景与选型建议

wzhih/guomi 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 868 次下载、GitHub Stars 达 7, 最近一次更新时间为 2022 年 01 月 05 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 wzhih/guomi 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 wzhih/guomi 我们能提供哪些服务?
定制开发 / 二次开发

基于 wzhih/guomi 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 868
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 20
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 7
  • Watchers: 0
  • Forks: 90
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-01-05