Php接口对接使用Aes-256-Ecb(PKCS7Padding)加密

接口对接中遇到aes-256-ecb加密的,整理一下大家一起分享一下。

其中appkey是对接方给的密钥。

这是aes-256-ecb加密方法

    public function AESEncrypt($params, $appKey)

    {

        return openssl_encrypt($params, 'aes-256-ecb', $appKey);

    }

这是aes-256-ecb解密方法

    public function AESDecrypt($params, $appKey)

    {

        return openssl_decrypt($params, 'aes-256-ecb', $appKey);

    }

这是例子:

    public function getProductDetail($productId)

    {

        // 参数

        $param = ['product_id' => $productId];

        //拼接公共参数

        $publicParamsReturn = $this->publicParams(json_encode($param, true), 'product/detail'); 

        $data   = $publicParamsReturn['params'];

        //发起请求

        $responseData = $this->initiateRequest($publicParamsReturn['url'], $data, 'getProductDetail', 'GET');

        if (!$responseData) {

            return false;

        }


        return $responseData;

    }

这是例子中用到的拼接公共参数方法:

这个拼接方法不同的对接方规定都不一样,按自己的需求修改即可。

private function publicParams($params)

    {

        $apiConfig = config('common.api');

        $this->appKey = $apiConfig['app_key'];

        $data      = [];

        $publicParams['appid']       = $apiConfig['app_id'];

        $publicParams['time']        = time();

        $publicParams['os']          = $apiConfig['os'];

        $publicParams['version']     = $apiConfig['version'];

        $publicParams['data'] = $this->AESEncrypt($params, $this->appKey);

        //处理参数

        $paramsStr = '';

        foreach ($publicParams as $key => $param) {

            $paramsStr .= $key . '=' . $param . '&';

        }

        $paramsStr = rtrim($paramsStr, '&');

        $data['params'] = $this->AESEncrypt($params, $this->appKey);

        $data['url']    = $apiConfig['url'] . '?' . $paramsStr;

        return $data;

    }

这个是例子中用到的发起请求方法

private function initiateRequest($url, $data)

    {

        // 发起请求-其中的curl就不多解释了

        $responseResult = $this->curlRequest($url, $data);


        // aec解密

        $responseResult = json_decode($responseResult, true);

        if ($responseResult['code'] != 200) {

            return false;

        }

        $responseData = $this->AESDecrypt($responseResult['data'], $this->appKey);

        $responseData = json_decode($responseData, true);


        return $responseData;

    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容