iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP sm2 国密扩展
  • 452
分享到

PHP sm2 国密扩展

phpgit开发语言c语言 2023-09-01 12:09:59 452人浏览 泡泡鱼
摘要

openssl-ext-sm2 介绍 基于openssl密码库编写的SM2椭圆曲线公钥密码算法PHP扩展 特性:非对称加密 git地址:https://gitee.com/state-secret-s

openssl-ext-sm2

介绍

基于openssl密码库编写的SM2椭圆曲线公钥密码算法PHP扩展

特性:非对称加密

git地址:https://gitee.com/state-secret-series/openssl-ext-sm2.git

软件架构

zend 常规php扩展结构

依赖要求

1,liunx :openssl/lib必须包含 libcrypto.so和libssl.so 动态库

2,Mac :openssl/lib必须包含 libcrypto.dylib和libssl.dylib 动态库

例:liunx
PHP sm2 国密扩展

例:mac
PHP sm2 国密扩展

安装教程

解压进入openssl-ext-sm2目录

cd openssl-ext-sm2-master
phpize

检查依赖

./configure  --with-openssl=/usr/local/openssl@1.1

检查结果

[lilunx openssl-ext-sm2]$ ./configure --with-openssl=/usr/local/openssl@1.1checking for grep that handles long lines and -e... /usr/bin/grepchecking for egrep... /usr/bin/grep -Echecking for a sed that does not truncate output... /usr/bin/sedchecking for cc... ccchecking whether the C compiler works... yeschecking for C compiler default output file name... a.outchecking for suffix of executables...checking whether we are cross compiling... nochecking for suffix of object files... ochecking whether we are using the GNU C compiler... yeschecking whether cc accepts -g... yeschecking for cc option to accept ISO C89... none neededchecking how to run the C preprocessor... cc -Echecking for icc... nochecking for suncc... nochecking whether cc understands -c and -o together... yeschecking for system library directory... libchecking if compiler supports -R... nochecking if compiler supports -Wl,-rpath,... yeschecking build system type... x86_64-pc-linux-gnuchecking host system type... x86_64-pc-linux-gnuchecking target system type... x86_64-pc-linux-gnuchecking for PHP prefix... /usr/local/phpchecking for PHP includes... -I/usr/local/php/include/php -I/usr/local/php/include/php/main -I/usr/local/php/include/php/TSRM -I/usr/local/php/include/php/Zend -I/usr/local/php/include/php/ext -I/usr/local/php/include/php/ext/date/libchecking for PHP extension directory... /usr/local/php/lib/php/extensions/no-debug-non-zts-20180731checking for PHP installed headers prefix... /usr/local/php/include/phpchecking if debug is enabled... nochecking if zts is enabled... nochecking for re2c... noconfigure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.checking for gawk... gawkchecking for OpenSSL support... yes, sharedchecking for Kerberos support... nochecking whether to use system default cipher list instead of hardcoded value... nochecking whether to enable sm2 support... yes, sharedchecking for RAND_egd... nochecking for pkg-config... /usr/bin/pkg-configchecking for OpenSSL version... >= 1.0.1checking for CRYPTO_free in -lcrypto... yeschecking for SSL_CTX_set_ssl_version in -lssl... yeschecking for ld used by cc... /usr/bin/ldchecking if the linker (/usr/bin/ld) is GNU ld... yeschecking for /usr/bin/ld option to reload object files... -rchecking for BSD-compatible nm... /usr/bin/nm -Bchecking whether ln -s works... yeschecking how to recognize dependent libraries... pass_allchecking for ANSI C header files... yeschecking for sys/types.h... yeschecking for sys/stat.h... yeschecking for stdlib.h... yeschecking for string.h... yeschecking for memory.h... yeschecking for strings.h... yeschecking for inttypes.h... yeschecking for stdint.h... yeschecking for unistd.h... yeschecking dlfcn.h usability... yeschecking dlfcn.h presence... yeschecking for dlfcn.h... yeschecking the maximum length of command line arguments... 1572864checking command to parse /usr/bin/nm -B output from cc object... okchecking for objdir... .libschecking for ar... archecking for ranlib... ranlibchecking for strip... stripchecking if cc supports -fno-rtti -fno-exceptions... nochecking for cc option to produce PIC... -fPICchecking if cc PIC flag -fPIC works... yeschecking if cc static flag -static works... nochecking if cc supports -c -o file.o... yeschecking whether the cc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yeschecking whether -lc should be explicitly linked in... nochecking dynamic linker characteristics... GNU/linux ld.sochecking how to hardcode library paths into programs... immediatechecking whether stripping libraries is possible... yeschecking if libtool supports shared libraries... yeschecking whether to build shared libraries... yeschecking whether to build static libraries... nocreating libtoolappending configuration tag "CXX" to libtoolconfigure: creating ./config.statusconfig.status: creating config.hconfig.status: config.h is unchanged

安装编译

make&&make install

修改php.ini

extension="sm2.so"

重启php-fpm或者apache

使用说明

创建公钥和私钥

$pub_key 取地址 结果为二进制$pri_key 取地址 结果为二进制sm2_key_pair($pub_key, $pri_key);返回值int 0 成功 其他状态失败

签名

$msg 信息$signature 输出签名结果$pri_key 私钥 二进制$iv userid 没有设置默认为空的操作:如需为空请设置1234567812345678sm2_sign($msg, $signature, $pri_key, $iv)返回值int 0 成功 其他状态失败

验签

$msg 信息$signature 输入签名结果$pub_key 公钥 二进制$iv userid 没有设置默认为空的操作:如需为空请设置1234567812345678sm2_sign_verify($msg, $signature, $pub_key, $iv);返回值int 0 成功 其他状态失败

公钥加密

$msg 信息$encrypt 输出加密结果 二进制 $pub_key 公钥 二进制sm2_encrypt($msg, $encrypt, $pub_key)返回值int 0 成功 其他状态失败

私钥解密

$encrypt 加密信息 二进制$string 输出结果 明文$pri_key 私钥sm2_decrypt($encrypt, $string, $pri_key)返回值int 0 成功 其他状态失败

演示

 $msg = '这是测试'; $iv = '1234567812345678'; //没有设置默认为空的操作:如需为空请设置1234567812345678 sm2_key_pair($pub_key, $pri_key); base64_encode($pub_key);  base64_encode($pri_key);  #公钥:BHSAPGXtrHNxqJ3/b0+eNu2mdO0mpdfTGNJUMoEWpNpSL53Dw+YM/B/Qt5OoLm4xQtw0hZY5wlWTR+cD629Grek= #私钥:++BuzKd1mPa0RXAJcY6DHDq9SUzo3T6/engbKReQRqI= sm2_sign($msg, $signature, $pri_key, $iv);  base64_encode($signature);    #私钥签名:+YHNtKkXbsRSs2nk5amd/YNqsiH8Kyr+oyLVVzuvRl+lqb40uzPxjsRo9QTYw7kZdWSfvM5lbxDMfF0cugQNfQ== sm2_sign_verify($msg, $signature, $pub_key, $iv); #公钥验签:0 sm2_encrypt($msg, $encrypt, $pub_key); base64_encode($encrypt);  #公钥加密:BBdm04Uh5EgzYKG3Ff8rBFJQZxRSXnrh9/WDZxS6PmzfnTDz0O0C115BPxMDfBNnOK5Ixs9kHTJPNSDoiHoiEmrnuotKN53rxnJtNd3MTbRjJOQ0sas9Kdktl1eHzj2/eseNaGh0LHZIOrBxAQ== sm2_decrypt($encrypt, $string, $pri_key); #私钥解密:这是测试

性能测试

纯php代码实现国密算法:Https://learnku.com/articles/68557

服务器参数

物理cpu:2个逻辑cpu:8个cpu核数:4个运行内存:8G

使用php框架:lumen

参与加密数据

{"request":{"body":{"ntbusmody":[{"busmod":"00001"}],"ntdumaddx1":[{"bbknbr":"75","dyanam":"招商测试","dyanbr":"11111111111","eftdat":"20220602","inbacc":"755936020410404","ovrctl":"N","yurref":"596620626253316098"}]},"head":{"funcode":"NTDUMADD","reqid":"202206021511010000001","userid":"B000001631"}},"signature":{"sigdat":"__signature_sigdat__","sigtim":"20220602161503"}}

userid

1234567812345678

性能分析

关于执行次数:1000/100次是因为使用纯php服务器跑不了10000次。

PHP sm2 国密扩展

使用xhorf栈跟踪分析:

1,纯PHP代码性能图
PHP sm2 国密扩展

2,PHP-sm2扩展代码性能图
在这里插入图片描述

来源地址:https://blog.csdn.net/qq_39316391/article/details/126240650

--结束END--

本文标题: PHP sm2 国密扩展

本文链接: https://www.lsjlt.com/news/388355.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP sm2 国密扩展
    openssl-ext-sm2 介绍 基于openssl密码库编写的SM2椭圆曲线公钥密码算法PHP扩展 特性:非对称加密 git地址:https://gitee.com/state-secret-s...
    99+
    2023-09-01
    php git 开发语言 c语言
  • JAVA集成国密SM2
    JAVA集成国密SM2加解密 一、pom配置二、代码集成2.1、目录结构2.2、源码2.3、测试 三、相关链接 国密算法概述:https://blog.csdn.net/qq_38254635/article/details...
    99+
    2023-08-16
    java 开发语言
  • java 国密算法SM2,SM3,SM4
    国密即国家密码局认定的国产密码算法,即商用密码。 国密算法是国家密码局制定标准的一系列算法。其中包括了对称加密算法,椭圆曲线非对称加密算法,杂凑算法。具体包括SM1,SM2,SM3等,其中: SM2为国家密码管理局公布的公钥算法,其加密强度...
    99+
    2024-04-02
  • php接入招行收款通支付国密sm2
    前段时间接了招行的国密sm2,帮大家避避坑 可以参考github sm2加密源码:https://github.com/lpilp/phpsm2sm3sm4 招商相关Issues:关于招行某些接口的数字信封加密 sm2解密失败问题 · Is...
    99+
    2023-08-31
    php 开发语言
  • PHP代码加密和扩展解密实战
    目录实战开始1.下载源码2.解压3.进入源码目录4.修改自定义文件头header.c5.修改默认的加密key6.为了安全机制,开启绑定网卡选项加密代码注意事项部署安装方式优缺点安全性...
    99+
    2024-04-02
  • PHP扩展开发深度探索:揭开PHP扩展开发的幕后秘密
    PHP扩展开发是创建自定义功能、扩展PHP核心功能并构建更强大的应用程序的艺术。它为PHP世界开辟了新的可能性,允许开发人员超越语言的基本限制。本文将带您踏上PHP扩展开发的旅程,从基础概念到高级技巧,为您提供全面的知识和实践指南。 PH...
    99+
    2024-02-11
    PHP扩展 扩展开发 自定义功能 核心功能 应用程序
  • 面向初学者的PHP扩展教程:用PHP扩展扩展PHP功能
    PHP扩展是指通过自定义PHP扩展库来扩展PHP的功能,主要目的是满足程序在不同场景下的需求。本文将通过一系列编码案例,对PHP扩展的编写进行讲解,实现定制化功能的需求。 扩展的类型 PHP扩展库有多种类型,其中最常见的是: 函数扩展库...
    99+
    2024-02-11
    PHP 扩展库 扩展功能
  • PHP zip 扩展
    Zip 扩展是文件处理中最重要的项目之一。如果你想压缩文件或通过一个文件移动多个文件,则需要 ZIP。 我们需要安装 libzip 来执行涉及其他平台的 ZIP 扩展的操作。 在 Ubuntu...
    99+
    2024-02-27
  • 详解PHP的Sodium加密扩展函数
    目录AEAD_AES_256_GCM 加解密信息签名Hash总结参考文档Sodium 扩展在 PHP7.2 后是跟随 PHP 源码一起发布的,只需要在编译的时候加上 --with-s...
    99+
    2024-04-02
  • 国密sm2公钥加密 私钥解密java代码实现
    目录 一、引入jar包 二、生成秘钥对,加解密工具类 一、引入jar包 org.bouncycastle bcprov-jdk15on ...
    99+
    2023-10-21
    java 开发语言 安全
  • 国密:生成SM2秘钥、加解密及加验签
    国密改造已经持续了很长时间了,相信很多从事金融科技类的程序猿都遇到过这个需求。这篇文章就为大家带来笔者对于国密改造的一些经验,主要是代码层面,有兴趣的同学可以研究下国密的算法模型! 注:本文所用到的工具类并非笔者所写! 目录 一、国密简述 ...
    99+
    2023-09-07
    java 开发语言
  • 国密SM2: 加解密实现 java代码完整示例
    目录  具体Java代码SM2算法加解密实现Demo: pom依赖引入 :  国家密码管理局于2010年12月17日发布了SM2算法,并要求现有的基于RSA算法的电子认证系统、密钥管理系统、应用系统进升级改造,使用支持国密SM2算法的证...
    99+
    2023-08-31
    java 算法
  • php安装扩展
    环境信息:ubuntu18、php7.4-fpm 以安装swoole扩展为例 下载php-dev,其中包含phpize命令 apt install php-dev 下载php扩展,在h...
    99+
    2023-08-31
    php 开发语言 apache
  • PHP代码加密和扩展解密的示例分析
    这篇文章主要介绍了PHP代码加密和扩展解密的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php有什么用php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法...
    99+
    2023-06-14
  • PHP扩展入门 我的第一个扩展
    虽说现在的PHP功能已经非常完善,一般情况下不需要我们自己手动扩展就已经可以完全支持我们的使用。但是,我觉得掌握扩展PHP这门技术对于我们以后的发展应该是很有帮助的。 下面我就带大家开始扩展PHP。...
    99+
    2024-02-27
  • 在phpstudy中安装php扩展,如apcu扩展等
    【APC是什么】 Alternative PHP Cache (APC)是一种对PHP有效的开放源高速缓冲储存器工具,他能够缓存opcode的php中间码。 【如何安装APC】 下载适合你php版本的...
    99+
    2023-09-10
    php apache 开发语言
  • 怎么写PHP扩展
    这篇文章主要介绍“怎么写PHP扩展”,在日常操作中,相信很多人在怎么写PHP扩展问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么写PHP扩展”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!从hello w...
    99+
    2023-06-17
  • php添加mysqli扩展
    php添加mysql扩展 一、问题二、解决1、查看你是否有mysqli.so扩展2、找不到,就需要添加mysqli.so扩展1)使用命令下载mysql扩展2) 再次搜索发现有mysqli.so...
    99+
    2023-09-25
    php mysql 开发语言
  • PHP安装扩展CURL
     缘由是安装某php网盘系统需要curl扩展: 通过php -v查看当前php版本: php -v 版本是是7.0.33 ,所以到官网下载https://www.php.net/distributions/php-7.0.33.tar...
    99+
    2023-09-27
    php 服务器 apache
  • 安装php扩展fileinfo
    随着互联网技术的逐步发展和普及,基于Web的应用程序越来越多地使用动态语言(如PHP)来构建。而在PHP中,文件上传是非常常见的操作。但是,由于文件类型繁多,很多情况下我们需要对上传的文件进行特定类型的验证或处理,这就需要用到PHP提供的强...
    99+
    2023-05-24
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作