美文网首页
PHP解密小程序手机号码

PHP解密小程序手机号码

作者: vins | 来源:发表于2019-12-11 16:40 被阅读0次
    /**
     * 检验数据的真实性,并且获取解密后的明文.
     * @param $encryptedData string 加密的用户数据
     * @param $iv string 与用户数据一同返回的初始向量
     * @param $data string 解密后的原文
     *
     * @return int 成功0,失败返回对应的错误码
     */
    public function decryptData($encryptedData, $iv, &$data,$code)
    {
        $getSessionKey = $this->getSessionKey($code);
        if (strlen($getSessionKey) != 24) return self::$IllegalAesKey;
        $aesKey=base64_decode($getSessionKey);
        if (strlen($iv) != 24) return self::$IllegalIv;
        $aesIV=base64_decode($iv);
        $aesCipher=base64_decode($encryptedData);
        $result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
        $dataObj=json_decode( $result );
        if( $dataObj  == NULL ) return self::$IllegalBuffer;
        if( $dataObj->watermark->appid != self::$appid ) return self::$IllegalBuffer;
        $data = $result;
        return $data;
    }

     /**
     * @param $code
     * @return mixed
     * 获取用户的key
     */
    public function getSessionKey($code) {
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=".self::$appid."&secret=".self::$appsecret."&js_code=".$code."&grant_type=authorization_code";
        $res = $this->httpRequest($url,'');
        $result = json_decode($res, true);
        return $result['session_key'];
    }

     /**
     *CRUL 网络请求
     */
    public static function httpRequest($url,$data){ // 模拟提交数据函数
        $curl = curl_init(); // 启动一个CURL会话
        curl_setopt($curl, CURLOPT_URL, $url);                         // 要访问的地址
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);          // 对认证证书来源的检查
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);          // 从证书中检查SSL加密算法是否存在
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);          // 使用自动跳转
        curl_setopt($curl, CURLOPT_AUTOREFERER, 1);             // 自动设置Referer
        curl_setopt($curl, CURLOPT_POST, 1);                    // 发送一个常规的Post请求
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);                 // Post提交的数据包
        curl_setopt($curl, CURLOPT_TIMEOUT, 30);                // 设置超时限制防止死循环
        curl_setopt($curl, CURLOPT_HEADER, 0);                  // 显示返回的Header区域内容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);          // 获取的信息以文件流的形式返回
        $tmpInfo = curl_exec($curl); // 执行操作
        if (curl_errno($curl)) {
            echo 'Errno'.curl_error($curl);//捕抓异常
        }
        curl_close($curl); // 关闭CURL会话
        return $tmpInfo; // 返回数据
    }

相关文章

网友评论

      本文标题:PHP解密小程序手机号码

      本文链接:https://www.haomeiwen.com/subject/fixagctx.html