相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
- PHP中opcode緩存簡(jiǎn)單用法分析
- thinkPHP控制器變量在模板中的顯示方法示例
- PHP move_uploaded_file() 函數(shù)(將上傳的文件移動(dòng)到新位置)
- dirname(__FILE__)的含義和應(yīng)用說明
- thinkPHP5框架實(shí)現(xiàn)分頁查詢功能的方法示例
- PHP中單雙號(hào)與變量
- PHP獲得當(dāng)日零點(diǎn)時(shí)間戳的方法分析
- Laravel ORM對(duì)Model::find方法進(jìn)行緩存示例詳解
- PHP讀寫文件高并發(fā)處理操作實(shí)例詳解
- 【CLI】利用Curl下載文件實(shí)時(shí)進(jìn)度條顯示的實(shí)現(xiàn)
PHP 7.1中利用OpenSSL代替Mcrypt加解密的方法詳解

概要:
php7.1發(fā)布后新特性吸引了不少PHPer,大家都在討論新特性帶來的好處與便利。但是從php7.0 升級(jí)到 php7.1 廢棄(過時(shí))了一個(gè)在過去普遍應(yīng)用的擴(kuò)展(mcrypt擴(kuò)展)。官方提供了相應(yīng)的解決提示,卻沒有提供更詳細(xì)的解決辦法。于是坑來了:
今天在使用微信開放平臺(tái)對(duì)接一個(gè)內(nèi)容管理系統(tǒng)的時(shí)候,在綁定公眾號(hào)的時(shí)候一直失敗
原因:
調(diào)試的時(shí)候發(fā)現(xiàn),直接原因是因?yàn)殚_放平臺(tái)里面填寫的授權(quán)事件(該授權(quán)事件每十分鐘會(huì)通送一次事件來更新ticket),即:
這個(gè)地方填寫的url,調(diào)試發(fā)現(xiàn),這個(gè)URL沒錯(cuò),微信也有每10分鐘推送過來,但是到最后一直接收不到ticket,看代碼發(fā)現(xiàn)是因?yàn)榻饷芪⑿胚^來的數(shù)據(jù)的時(shí)候報(bào)錯(cuò)了:
<?php function aes_decode($message, $encodingaeskey = '', $appid = '') { $key = base64_decode($encodingaeskey . '='); $ciphertext_dec = base64_decode($message); $iv = substr($key, 0, 16); $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, ''); mcrypt_generic_init($module, $key, $iv); $decrypted = mdecrypt_generic($module, $ciphertext_dec); mcrypt_generic_deinit($module); mcrypt_module_close($module); $pad = ord(substr($decrypted, -1)); if ($pad < 1 || $pad > 32) { $pad = 0; }