相關(guān)關(guān)鍵詞
關(guān)于我們
最新文章
PHP 7.1中利用OpenSSL代替Mcrypt加解密的方法詳解

概要:
php7.1發(fā)布后新特性吸引了不少PHPer,大家都在討論新特性帶來的好處與便利。但是從php7.0 升級到 php7.1 廢棄(過時)了一個在過去普遍應(yīng)用的擴(kuò)展(mcrypt擴(kuò)展)。官方提供了相應(yīng)的解決提示,卻沒有提供更詳細(xì)的解決辦法。于是坑來了:
今天在使用微信開放平臺對接一個內(nèi)容管理系統(tǒng)的時候,在綁定公眾號的時候一直失敗
原因:
調(diào)試的時候發(fā)現(xiàn),直接原因是因為開放平臺里面填寫的授權(quán)事件(該授權(quán)事件每十分鐘會通送一次事件來更新ticket),即:
這個地方填寫的url,調(diào)試發(fā)現(xiàn),這個URL沒錯,微信也有每10分鐘推送過來,但是到最后一直接收不到ticket,看代碼發(fā)現(xiàn)是因為解密微信過來的數(shù)據(jù)的時候報錯了:
<?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; }