api加密与校验
一、函数代码
/**
* 校验
* @data (请求的数组)
* @salt (加密盐)
* */
private function verify(array $data, $salt){
$sign = $data['sign'] ?? null;
if(!$sign) return false;
unset($data['sign']);
return $sign === hash('sha256', $this->serial($data) . $salt);
}
/**
* 生成签名
* @data (请求的数组)
* @salt (加密盐)
* */
private function sign(array $data, $salt){
return hash('sha256', $this->serial($data) . $salt);
}
/**
*生成一个经过 URL-encode 的请求字符串
* @data (请求的数组)
* */
private function serial(array $data){
ksort($data);//按照键名对数组排序
return http_build_query($data);
}
二、校验方式
$jsonData = file_get_contents("php://input");
$postData = json_decode($jsonData,true);
if(!$this->verify($postData["data"],$salt)){
trace("签名错误了!!!!!!!!!!!!!","ERROR");
return false;
}
三、加密方式
$retData = ['openlink' => "","timestamp" =>time()];
$retData["sign"] = $this->sign($retData,$salt);
$this->success('返回成功', $retData);
api加密与校验的更多相关文章
- 对称加密,API加密
用于API加密,双方约定好signature_key对请求的参数进行处理 处理步骤如下 把请求的数据生成为key=>value的形式,然后拼接生成arg_key arg_key加上双方约定的si ...
- API加密框架monkey-api-encrypt发布1.2版本
框架介绍 monkey-api-encrypt 是我之前写的一个API加密的框架,主要是将加密/解密的逻辑交给框架实现,等数据到达Controller后自动解密了,让开发人员不需要关注数据的加解密操作 ...
- API接口签名校验
在开发app中,我们经常要为app提供接口.但是为了保证数据的安全,我们通常会对接口的参数进行加密. 1.不验证的接口api api接口请求,"http://www.xx.com/getUs ...
- c# 百度地图api APP SN校验失败
在使用c#调用百度地图Web服务api遇到的签名(sn校验)问题,在此记录一下,(ip白名单校验的请忽略) 1.首先获取ak与sk,这个两个东西可以从控制台中获取到 2.在这个地址:sn签名算法,里面 ...
- API接口签名校验(C#版)
我们在提供API服务的时候,为了防止数据传输过程被篡改,通常的做法是对传输的内容进行摘要签名,把签名串同参数一起请求API,API服务接收到请求后以同样的方式生成签名串,然后进行对比,如果签名串不一致 ...
- Crypto API加密通信流程
应用程序使用Crypto API进行加密通信的一般步骤如下: 1,include wincrypt.h 2,调用CryptAcquireContext()获得某个CSP模块中的密钥容器(key con ...
- ASP.NET WEB API 自定义模型校验过滤器
对外公开WEB接口时,对模型校验是常见的安全常识,常见的写法是在controller中判断ModelState.IsValid,以注册用户API为例. Model: public class Regi ...
- 如何使用java validation api进行参数校验----Hibernate-Validation
在日常开发中,Hibernate Validator经常用来验证bean的字段,基于注解,方便快捷高效. 1. Bean Validation 中内置的 constraint 注解 ...
- PHP:第五章——字符串加密及校验函数
<?php header("Content-Type:text/html;charset=utf-8"); //1.md5——计算字符中的散列值 //对一段信息(Messag ...
- API加密框架原理解密
关于框架的使用文章请参考: 前后端API交互如何保证数据安全性?:http://cxytiandi.com/blog/detail/20235 API数据加密框架monkey-api-encrypt: ...
随机推荐
- php严格模式的使用
<?php declare (strict_types = 1); namespace app\controller; use app\BaseController; use think\fac ...
- VUE学习-计算属性与监听器
计算属性与监听器 计算属性 当 vm.message 发生改变时,所有依赖 vm.reversedMessage 的绑定也会更新 <div id="example"> ...
- Oracle dump文件的一些经验
dump文件对于DBA而言再平常不过了.不过因为dump文件是二进制文件,我们平时使用中不太关注.再导入dump文件时有很多细节和技巧是值得注意的. 1.查看dump文件的一些基本信息 strings ...
- 实现一个网页同时调用多个倒计时 jquery/js
最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js2 var plugJs={ stamp:0, tid:1, stam ...
- git版本回退:git reset --hard 版本号
开发项目中会遇到各种奇葩的事情: 奇葩系列之在项目更新迭代开发正带劲的时候突然更新项目之前的项目出问题了要修复.在开发功能一半又要修复之前的问题着急上线的情况下.此时此刻git的版本回退是那么的迷人, ...
- ubuntu 20.04 修改静态IP和dhcp自动分配IP
一.静态分配固定IP kuaibang@k8smaster:~$ sudo nano /etc/netplan/00-installer-config.yaml # This is the netwo ...
- ESP8266_RTOS_SDK更新子模块出错git remote: [session-f0448081] 404 not found!
报错:git remote: [session-f0448081] 404 not found! 在.git文件夹中的config文件中找到子模块的地址,用浏览器打开发现确实没有对应的子模块仓库,这个 ...
- 个人js基础知识及看js高级程序设计查漏 汇总
1.事件循环机制 js单线程操作. 1>主线程读取js代码 ,此时为同步环境,形成相应的堆和执行栈. 2>主线程遇到异步任务,指给对应的异步进程处理. 3>异步进程处理完毕后,将相应 ...
- jenkins +docker+python接口自动化之jenkins拉取gitee上的代码(四)
1.背景 1.经过我们前面几轮的安装测试,我们已经安装了jenkins容器,python3,以及运行我们python代码所需要的第三方库在requirements.txt文件下统一安装. 2.需求 我 ...
- pandas的数据结构--Series创建使用
# 1. 使用Series创建一个空的系列:import pandas as pds=pd.Series()print(s)输出结果为:Series([], dtype: float64) # 2. ...