cuifox/gm-ssl-helper

Maintainers

Package info

gitee.com/cuifox/gm-ssl-helper.git

pkg:composer/cuifox/gm-ssl-helper

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

1.0 2026-04-27 06:17 UTC

This package is not auto-updated.

Last update: 2026-04-28 04:48:55 UTC


README

GM-SSL 是一个 PHP 扩展,实现了中华人民共和国国家密码管理局规定的国产密码算法,包括 SM2、SM3、SM4、SM9、ZUC 等标准算法。为 PHP 应用提供安全、高效的国产密码学支持。

https://github.com/GmSSL/GmSSL-PHP

功能特性

哈希算法

  • SM3:国产密码哈希算法,用于数据完整性校验和数字签名

对称加密算法

  • SM4 分组密码:支持多种工作模式
    • ECB 模式加密/解密
    • CBC 模式加密/解密
    • CTR 模式加密/解密
    • GCM 模式认证加密/解密
  • ZUC 流密码:用于移动通信的祖冲之流密码算法

数字签名

  • SM2:基于椭圆曲线公钥密码算法的数字签名
    • 密钥生成
    • 签名与验签
    • 公钥加密与私钥解密
    • Z值计算
  • SM9:基于标识的密码算法
    • 签名系统(主密钥生成、密钥提取、签名验签)
    • 加密系统(主密钥生成、密钥提取、加密解密)

证书处理

  • PEM 格式证书解析
  • 证书信息提取(序列号、颁发者、有效期、主体等)
  • 基于 CA 证书的签名验证

安装

需要先安装 GM-SSL 底层库,然后安装 PHP 扩展:

https://github.com/GmSSL/GmSSL-PHP

或在 PHP 项目中使用 Composer:

{
    "require": {
        "cuifox/gm-ssl-helper": "^1.0"
    }
}

使用示例

SM3 哈希

$msg = "Hello World";
$hash = gmssl_sm3($msg);

SM4 加解密

$key = gmssl_rand_bytes(16);
$iv = gmssl_rand_bytes(16);
$data = "需要加密的数据";

// CBC 模式加密
$encrypted = gmssl_sm4_cbc_encrypt($key, $iv, $data);

// CBC 模式解密
$decrypted = gmssl_sm4_cbc_decrypt($key, $iv, $encrypted);

SM2 签名验签

// 生成密钥对
$keypair = gmssl_sm2_key_generate();

// 签名
$id = "user@example.com";
$msg = "待签名消息";
$signature = gmssl_sm2_sign($keypair, $id, $msg);

// 验签
$valid = gmssl_sm2_verify($pubkey, $id, $msg, $signature);

SM9 签名

// 生成主密钥
$master_key = gmssl_sm9_sign_master_key_generate();

// 提取用户签名密钥
$user_id = "user@example.com";
$sign_key = gmssl_sm9_sign_master_key_extract_key($master_key, $user_id);

// 签名和验签
$sig = gmssl_sm9_sign($sign_key, "消息内容");
$valid = gmssl_sm9_verify($master_key, $user_id, "消息内容", $sig);

证书操作

$cert = gmssl_cert_from_pem("/path/to/cert.pem");

// 获取证书信息
$serial = gmssl_cert_get_serial_number($cert);
$issuer = gmssl_cert_get_issuer($cert);
$subject = gmssl_cert_get_subject($cert);
$validity = gmssl_cert_get_validity($cert);

// 打印证书信息
gmssl_cert_print($cert, "证书详情");

系统要求

  • PHP >= 7.0
  • GM-SSL C 库

许可证

本项目遵循相关开源许可证协议。

相关资源