原因是官方的php7.1版本是不支持mcrypt扩展(将来也不会支持,在7.1以上的版本直接废掉).所以就会抛出错误了.
所以,只能用openssl解密代码,逻辑不变,只是解密用的php方法变了
https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html
1.对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。
2.对称解密的目标密文为 Base64_Decode(encryptedData),
3.对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是16字节
4.对称解密算法初始向量 iv 会在数据接口中返回。
最后的结果代码就是用openssl替换mcrypt的解密逻辑
代码如下
// $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); $decrypted = openssl_decrypt($aesCipher, 'aes-128-cbc', $this->key, true, $aesIV);