【 PHP 】项目使用 libsodium 扩展
开始
前面说了微信小微商户下载证书返回的密文用 AEAD_AES_256_GCM
算法 解密的方法。其中用到了 string sodium_crypto_aead_aes256gcm_decrypt ( string $ciphertext , string $ad , string $nonce , string $key )
这个函数。但是这个函数可能你们调用的时候会报错,那是因为使用这个函数需要开启 libsodium 扩展才能使用。
官方文档上面对该扩展的说明如下:
As of PHP 7.2.0 this extension is bundled with PHP. For older PHP versions this extension is available via PECL.
windows 安装方法
(PHP ≥ 7.2) 直接去 php.ini 开启扩展就行 ,extension=php_sodium.dll
。因为 PHP7.2 版本后 PHP core 中就整合加密库 Libsodium
(PHP < 7.2.0) 需要安装,libsodium PECL 地址 http://pecl.php.net/package/libsodium然后下载 DLL 文件
下载完成后解压,然后
- 把
php_sodium.dll
文件放到你的php安装目录下的ext目录下(我这运行的是phpStudy安装的php环境) - libsodium.dll 文件直接放到PHP安装的根目录
- 配置下php.ini,开启使用扩展
extension=php_sodium.dll
- 最后重启下php,
- 查看phpinfo,大功告成
对于PHP 7以下版本windows上我测试了php 5.6,1.0.6 version 能安装但是不能使用 sodium_crypto_aead_aes256gcm_decrypt 函数。
我们可以在较旧的PHP上使用Libsodium和/或如果我们无法安装PHP扩展吗?
Sodium Compat PHP 类库
Sodium Compat 是用于 Sodium 加密库(libsodium)的纯 PHP 填充,它是 PHP 7.2.0+ 的核心扩展,也可用于 PECL。
这个库 tentativeley 支持PHP 5.2.4 - 7.x(最新版),但官方只支持非 EOL 版本的 PHP。
如果安装了 PHP 扩展,Sodium Compat 将机会性地透明地使用 PHP 扩展而不是我们的实现。
github 地址: https://github.com/paragonie/sodium_compat
2019-01-07新增
liunx 下安装方法
看完这个基本就行了点击查看《在PHP项目中使用Libsodium》
编译安装
下载一份sodium 安装包(最好是最新的稳定版本),然后遵循以下步骤
# 先解压,进入目录
./configure
make && make check
sudo make install
pecl安装
然后。。。对了,如果您的系统上没有安装PECL包管理器,请确保首先安装。在Internet上有针对PHP支持的几乎所有操作系统安装PECL的指南。然后执行下面的命令
pecl install libsodium
最后别忘了在 php.ini 中添加
extension=sodium.so
最后最后查看 phpinfo
如下图就代表安装成功
【 PHP 】项目使用 libsodium 扩展相关推荐
- [2017BUAA软工]结对项目:数独扩展
结对项目:数独扩展 1. Github项目地址 https://github.com/Slontia/Sudoku2 2. PSP估计表格 3. 关于Information Hiding, Inter ...
- Spring Boot + vue-element 开发个人博客项目实战教程(二十五、项目完善及扩展(前端部分))
⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot + vue-element 开发个人博客项目实战教程 ⭐专栏内容:零基础学Java.个人博客系统 ⭐我的文档网站:http://xyhwh- ...
- JavaWeb项目中如何扩展一个Request对象——包装器HttpServletRequestWrapper
一.使用场景 在一个JavaWeb中我们会遇到统一处理出入参或者处理特殊参数的场景,这些场景就需要我们扩展我们的Request对象.所谓的包装器就是在原来的基础上包装一下就是在原来功能上添加一些其他功 ...
- java byte 拓展_Java项目中如何扩展第三方jar包中的类?
有些时候你对第三方得到jar包中的类并不是很满意,想根据实际情况做一些扩展.如果说第三方的jar包已经提供了一些可扩展的类,比如提供了Interceptor,Filter或者其他的类,那么使用原生的比 ...
- activiti官网实例项目activiti-explorer之扩展流程节点属性
节点中添加"关联表单"属性 1,stencilset.json中加入如下代码 , { "name" : "approveTypepackage ...
- uni-ui简单入门教程 - 如何用HBuilderX为uni-app项目启用uni-ui扩展组件?
须知 uni-app是一个前端框架 简单来说,uni-app的组件,类似HTML的标签,例如a转navigation.span转text等 uni-app的组件包括 基础组件 (自带免安装) + 扩展 ...
- 由一次WCF项目的需求扩展想到的
这个小项目或者说是小功能大约一年以前开发的.现在写这篇文章只是为了共享这个思路使有同样需求的人少走弯路.公司其它人员开发了一个适用于pc客户端调用的wcf服务.由于公司添加了android与ios客户 ...
- 五角大楼计划扩展其有争议的Maven AI项目
文章来源:ATYUN AI平台 五角大楼宣布计划建立一个新的联合人工智能中心(JAIC),该中心可能以Maven项目为模型,该项目是美国军方和私营公司之间有争议的合作项目,训练算法来分析无人机镜头.该 ...
- zephir 开发项目_通过Zephir开发PHP扩展的入门
zephir 开发项目 This tutorial will explain how to create a PHP extension using a new language: Zephir, w ...
最新文章
- Nmap扫描教程之DNS服务类
- VTK:几何对象演示用法实战
- 初学视觉学习笔记----用摄像头获取图片
- 【大话数据结构算法】直接插入排序
- 使用GDB命令行调试器调试C/C++程序
- mysql keepalived双主双活_mysql高可用架构方案之中的一个(keepalived+主主双活)
- easy datagrid 按钮控制
- java程序员到J2EE架构师
- 数据结构——中国邮递员问题
- html页面访pdf样式,html网页布局模板.pdf
- 电子护照阅读器|酒店机场高铁自助机录入系统
- 错误-The server encountered an unexpected condition that prevented it from fulfilling the request
- 武汉大学计算机系英语挂科,挂科率最高的前100所大学 武大挂的最多的居然是...
- 怎么用手机控制电脑?手机控制手机如何实现?
- php 设置时区 prc,php中如何设置时区
- 新手爬取51job,智联,boss网站职位信息总结和代码(小杜总结)
- 源码阅读技巧总结-Android
- ios开发中常用的一些软件
- vscode 最舒服字体 onedark dark+vivid
- 一个执行计划异常变更的案例 - 外传之SQL Profile(上)