項目中使用libsodium擴展

前段時間研究了微信小微商戶,地址:https://pay.weixin.qq.com/wiki/doc/api/xiaowei.php?chapter=19_11php

其接口操做中須要下載證書針對返回的密文用 AEAD_AES_256_GCM 算法解密git

其中用到了 string sodium_crypto_aead_aes256gcm_decrypt ( string $ciphertext , string $ad , string $nonce , string $key ) 這個函數github

可是這個函數可能調用的時候會報錯,那是由於使用這個函數須要開啓 libsodium 擴展才能使用算法

官方文檔上面對該擴展的說明以下:windows

As of PHP 7.2.0 this extension is bundled with PHP. For older PHP versions this extension is available via PECL.api

從php 7.2.0開始,這個擴展與php捆綁在一塊兒。對於舊的PHP版本,此擴展可經過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 文件測試

下載完成後解壓,而後this

  • 把 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 函數。

由於5.6上支持的版本爲1.0.6,而只有大於1.0.8的版本才支持此函數。

 

Sodium Compat PHP 類庫,網上說舊的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

實際證實沒法實現,由於低於7.1版本的php_openssl,不支持AEAD_AES_256_GCM算法的加密和解密。

因此只能使用7.1以上的PHP版原本解決了。

外文鏈接:https://paragonie.com/book/pecl-libsodium/read/00-intro.md#installing-libsodium

 

做者:舊舊的 <393210556@qq.com> 解決問題的方式,就是解決它一次

相關文章
相關標籤/搜索