cuifox / gm-ssl-helper
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 库
许可证
本项目遵循相关开源许可证协议。