AES加解密在php接口请求过程中的应用示例(2)

<?php include 'AES.php'; $md5Key = 'ThisIsAMd5Key'; // 对应服务端:$md5key = 'ThisIsAMd5Key'; $aesKey = Crypt_AES::strToHex('1qa2ws4rf3edzxcv'); // 对应服务端:$aesKey = '3171613277733472663365647A786376'; $aesKey = Crypt_AES::hex2bin($aesKey); $aesIV = Crypt_AES::strToHex('dfg452ws'); // 对应服务端:$aesIV = '6466673435327773'; $aes = new Crypt_AES($aesKey,$aesIV,array('PKCS7'=>true, 'mode'=>'cbc')); // var_dump($aes); $data['name'] = 'idoubi'; $data['sex']= 'male'; $data['age'] = 23; $data['signature'] = '白天我是一个程序员,晚上我就是一个有梦想的演员。'; $content = base64_encode($aes->encrypt(json_encode($data))); $content = urlencode($content); $sign = md5($content.$md5Key); $url = 'http://localhost/aesdemo/api.php'; $params = "version=1.0&sign=$sign&content=$content"; // 请求接口 post($url, $params); /** * 接口请求函数 */ function post($url, $params) { $curlPost= $params; $ch = curl_init(); //初始化curl curl_setopt($ch, CURLOPT_URL, $url); //提交到指定网页 curl_setopt($ch, CURLOPT_HEADER, 0); //设置header curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求结果为字符串且输出到屏幕上 curl_setopt($ch, CURLOPT_POST, 1); //post提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $result = curl_exec($ch);//运行curl curl_close($ch); var_dump(json_decode($result, true)); }

接口处理逻辑:

<?php include 'AES.php'; $data = $_POST; // 接口请求得到的数据 $content = $data['content']; $sign = $data['sign']; $aesKey = '3171613277733472663365647A786376'; $aesIV = '6466673435327773'; $md5key = 'ThisIsAMd5Key'; // 校验数据 if(strcasecmp(md5(urlencode($content).$md5key),$sign) == 0) { // 数据校验成功 $key = Crypt_AES::hex2bin($aesKey); $aes = new Crypt_AES($key, $aesIV, array('PKCS7'=>true, 'mode'=>'cbc')); $decrypt = $aes->decrypt(base64_decode($content)); if (!$decrypt) { // 解密失败 echo json_encode('can not decrypt the data'); } else { echo json_encode($decrypt); // 解密成功 } } else{ echo json_encode('data is not integrity'); // 数据校验失败 }

上述接口请求过程中定义了三个加解密需要用到的参数:$aesKey、$aesIV、$md5key,在实际应用过程中,只要与客户端用户约定好这三个参数,客户端程序员利用这几个参数对要请求的数据进行加密后再请求接口,服务端程序员在接收到数据后利用同样的加解密参数对数据进行解密,整个api请求过程中的数据就很安全了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f7f4d0436a832f3b8fbc3b4169a3a914.html