微信小程序和php哪个难,学习猿地-微信小程序与 PHP 7.1 的一点小坑

前段时间写小程序接口,涉及到需要获取微信用户的数据。微信小程序提供了加密数据解密的算法。官方提供了多种编程语言。

1c678c79d41e840ca7a6422dd802776d.png

只是天有不测风云,我当时使用的环境是 PHP 7.1 。加密函数 mcrypt_module_open() 因为过时而被废弃。

微信小程序官方提供的示例代码,PHP 文件夹中,pkcs7Encoder.php 的如下内容:

/**

* 对密文进行解密

*

* @param string $aesCipher 需要解密的密文

* @param string $aesIV 解密的初始向量

* @return string 解密得到的明文

*/

public function decrypt( $aesCipher, $aesIV )

{

try {

$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');

mcrypt_generic_init($module, $this->key, $aesIV);

//解密

$decrypted = mdecrypt_generic($module, $aesCipher);

mcrypt_generic_deinit($module);

mcrypt_module_close($module);

} catch (Exception $e) {

return array(ErrorCode::$IllegalBuffer, null);

}

try {

//去除补位字符

$pkc_encoder = new PKCS7Encoder;

$result = $pkc_encoder->decode($decrypted);

} catch (Exception $e) {

//print $e;

return array(ErrorCode::$IllegalBuffer, null);

}

return array(0, $result);

}

进行如下替换,即可解决。

/**

* 对密文进行解密

*

* @param string $aesCipher 需要解密的密文

* @param string $aesIV 解密的初始向量

* @return string 解密得到的明文

*/

public function decrypt($aesCipher, $aesIV)

{

try {

//解密

$decrypted = openssl_decrypt($aesCipher, 'AES-128-CBC', $this->key, OPENSSL_RAW_DATA, $aesIV);

} catch (\Exception $e) {

return array($this->IllegalBuffer, null);

}

try {

//去除补位字符

$pkc_encoder = new PKCS7Encoder;

$result = $pkc_encoder->decode($decrypted);

} catch (Exception $e) {

//print $e;

return array(ErrorCode::$IllegalBuffer, null);

}

return array(0, $result);

}

简单点说就是将第一段 try {} catch ($e) {} 中的 try {} 进行替换,换成可支持的 openssl_decrypt() 即可解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值