API接⼝加密⽅法API接⼝加密代码分享
API接⼝加密校验源代码分享
API接⼝做好了,总不能裸奔调⽤吧,也不能在HTTP/HTTS⾥键⼊约定的密钥模式,下⾯给⼤家介绍⼀种简单的API接⼝加密验证
API接⼝加密通信思路:
1. 约定密钥,密钥在实际操作中可以做个配置⽂件,随意更换
2. ⽣成时间戳、随机数、签名⽣成的字符串
3.推送到API服务端做加密校对识别
API接⼝通信服务端加密类源代码类
class encry {
const TOKEN = 'API';
//响应前台的请求
public function respond(){
//验证⾝份;接收前台传过来的参数
$timeStamp = isset($_GET['t']) ? $_GET['t'] :'';//时间
$randomStr = isset($_GET['r']) ? $_GET['r'] :'';//随机数
$signature = isset($_GET['s']) ? $_GET['s'] :'';//签名
$str = $this -> arithmetic($timeStamp,$randomStr);//通过前台传过来的时间戳跟随机数重新按照签名函数进⾏⽣成⼀遍签名
//然后将传过来签名跟,⾃⼰重新⽣成的签名进⾏⽐对
if($str != $signature){
$arr['success'] = '0';
$arr['msg'] = '⽆权访问';
}
else{
$arr['success'] = '1';
$arr['msg'] = 'success';
}
echo json_encode($arr,JSON_UNESCAPED_UNICODE);
}
/**
* @param $timeStamp 时间戳
* @param $randomStr 随机字符串
* @return string 返回签名
*/
public function arithmetic($timeStamp,$randomStr){
$arr['timeStamp'] = $timeStamp;
$arr['randomStr'] = $randomStr;
$arr['token'] = self::TOKEN;
//按照⾸字母⼤⼩写顺序排序
sort($arr,SORT_STRING);
$str = implode($arr);//拼接成字符串
$signature = sha1($str);//SHA-1加密
$signature = md5($signature);//MD5=加密
$signature = strtoupper($signature);//转换成⼤写
return$signature;
}
}
客户端调⽤API接⼝推送加密代码类
class apiget{
const TOKEN = 'API';//密钥
const APIURL = 'www.68v8/api.php';//模拟前台请求服务器api接⼝
public function getDataFromServer(){
$timeStamp = time();//时间戳
$randomStr = $this -> createNonceStr();//随机数
$signature = $this -> arithmetic($timeStamp,$randomStr);//⽣成签名,这⾥⽣成签名⽅法⾃⼰定义,可以⽤这个⽅法,也可以⽤⾮对称加密都可以;
$url = self::APIURL."?t={$timeStamp}&r={$randomStr}&s={$signature}";//url地址:地址中传递的三个参数,可以直接这样传递,也可以⽤⾮对称加密加密完成后再传到地址中都可以$result = $this -> httpGet($url);
echo($result);
}
//curl模拟get请求。
private function httpGet($url){
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,$url);//需要请求的是哪个地址
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//表⽰把请求的数据已⽂件流的⽅式输出到变量中
$result = curl_exec($curl);
curl_close($curl);
return$result;
}
//随机⽣成字符串
private function createNonceStr($length = 8) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
}
return "z".$str;
}
/**
* @param $timeStamp 时间戳
* @param $randomStr 随机字符串
* @return string 返回签名
*/
private function arithmetic($timeStamp,$randomStr){
$arr['timeStamp'] = $timeStamp;
$arr['randomStr'] = $randomStr;
$arr['token'] = self::TOKEN;
//按照⾸字母⼤⼩写顺序排序
sort($arr,SORT_STRING);
$str = implode($arr);//拼接成字符串
$signature = sha1($str);//SHA-1加密加密
$signature = md5($signature);//MD5加密
$signature = strtoupper($signature);//转换成⼤写
return$signature;
免费分享网站源码}
}
调⽤类
$apiget = new apiget();
$apiget->getDataFromServer();
授⼈以鱼不如授⼈以渔,分享是⼀种快乐,简单的代码能够对你们有⽤也是⼀种快乐,技术交流号:158********
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论