PHP关于国密SM3加密的处理

这几天对接中国联通物联网IoT Gateway门户API系统,其中用到国密SM3,其提供的token需使用国密SM3对源串进行加密处理,网上搜索也没找到什么函数之类的,只有c和java语言写的,看来要使用这个SM3加密就必须进行扩展了;由于之前没搞过再者又没找到,都想放弃了,偶然发现了:a php extension for sm3(实现sm3算法的php扩展)【git 地址】 OK了,就他了,进行测试!

php-sm3

a php extension for sm3(实现sm3算法的php扩展)

安装步骤

  1. git clone该项目到你的linux php源码ext目录下(可以是任意目录 ).
    如:[root@localhost home]# git clone https://github.com/luzhuqun/php-sm3.git
  2. 进入sm3扩展,执行/usr/local/php/bin/phpize
    如:[root@localhost home]# cd php-sm3
    [root@localhost php-sm3]# /www/server/php/72/bin/phpize  (我使用的宝塔面板)
  3. ./configure --with-php-config=/usr/local/php/bin/php-config
    如:[root@localhost php-sm3]# ./configure --with-php-config=/www/server/php/72/bin/php-config
  4. make && make install
    如:[root@localhost php-sm3]# make && make install
  5. 添加扩展到你的php.ini文件 extension=sm3.so
    登陆宝塔面板,找到PHP版本
  6. 测试/usr/local/php/bin/php -r "var_dump(sm3('abc'));" 输出string(64) "66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0"

重启下php,这下就好了,可以在你的程序中使用了:

到此结束,以后有类似的扩展都可以这样安装!今天又上了一课!

重要提示:

之前安装的是在PHP7.2上面一切都是那么的自然,今天在PHP5.5上面安装就提示错误了:

最终发现只有PHP>=7.0才可正常使用,否则出错!如果你在低于7.0上安装成功的话,麻烦您告诉我下!求教,谢谢!

参与评论

  • shycomet用户

    如果要用秘钥加密,要怎么写

    4年前 (2020-07-17)
    3楼
    回复
  • 后世今生站长

    这个只是个加密方式而已!具体其它的密钥应该和你说的这个不同的!是不是SM3加密后使用密钥或者密钥后进行SM3再加密

    4年前 (2020-07-18)
    回复
  • dnon888用户

    -bash: ./configure: No such file or directory 请问这个如何解决

    5年前 (2020-03-25)
    2楼
    回复
  • 后世今生站长

    看返回分析原因:1、在你配置指定路径时没有这样的文件或目录存在,先创建一个目录。2、可能现在执行的目录下没有configure 程序,你无法执行,你到configure所在目录下重新执行语句就可以了

    5年前 (2020-03-26)
    回复
  • Simple用户

    php7 才有 zend_string,低于7版本的装不起~

    5年前 (2019-11-21)
    1楼
    回复
  • 后世今生站长

    错误提示已经说明了[error: ‘zend_string’ undeclared (first use in this function)] 确实这个只有PHP7 才有的,故而也只有PHP7以上才可使用

    5年前 (2019-11-23)
    回复