PHP SM2 SM3 SM4 国密算法整理

1.0.1 2021-11-19 06:10 UTC

This package is auto-updated.

Last update: 2024-09-19 12:04:26 UTC


README

  • PHP版本的国密sm2签名算法,sm3的hash,sm4的ecb加解密,要求PHP7,打开gmp支持
  • 目前如果服务器配套使用的是openssl 1.1.1x,目前到1.1.1k,sm3,sm4都可以直接使用openssl_xxx系列函数直接实现,不必大量编写代码,但不支持sm2的签名,sm2的加解密

SM2

  • 该算法主要基于PHPECC算法架构,添加了sm2的椭圆曲线参数算法
  • 参考了https://github.com/ToAnyWhere/phpsm2 童鞋的sm2验签算法,密钥生成算法
  • 添加了签名算法,支持sm2的16进制,base64公私钥的签名,验签算法
  • 支持从文件中读取pem文件的签名,验签算法
  • sm2的加密解密算法在openssl 1.1.1的版本下自带的函数中暂无sm2的公钥私钥的加密函数,需要自己实现,建议使用C,C++的算法,打包成PHP扩展的方式
  • 由于openssl没有实现sm2withsm3算法,用系统函数无法实现签名及证书的自签名分发

SM3

SM4

  • 该算法直接使用https://github.com/yinfany/sm 童鞋的sm4算法
  • 只实现了ecb算法,没有实现cbc算法
  • 在openssl 1.1.1下可使用系统的函数,已支持sm4-cbc,sm4-cfb,sm4-ctr,sm4-ecb,sm4-ofb,详见openssl_tsm4.php

总结