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: ...
随机推荐
- 记一次couchbase(memcached)安装以及使用
环境 CentOs 6.5 final 1.下载软件包 wget http://packages.couchbase.com/releases/2.1.0/couchbase-server-enter ...
- vue cli 项目初始化配置
- 方法综合练习:out、params、ref
using System; namespace ConsoleApp1 { class Program { /// <summary> /// 求两个参数之间的最大值 /// </s ...
- mysql 创建表 datetime NOT NULL DEFAULT '0000-00-00 00:00:00' 默认值失败
set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREAT ...
- python获取主机内网中所有MAC地址
import osimport subprocessimport socket"""python获取主机内网中所有MAC地址"""def g ...
- python利用xlwings写入一行或一列Excel数据
注意点:这里的sheet参数默认是已经存在的sheet表,如不存在该sheet,则使用add方法新增即可,示例: wb = xw.Book(r"C:\Users\Desktop\result ...
- Nmap常见命令
一测试环境 靶机:metasploitable2-linux [下载地址] IP:192.168.88.128 攻击机: kali IP :192.168.88..131 二 Nmap命令 ...
- Java poi导入Excel
public MessageTo insertExcel(MultipartFile file) { try { InputStream is = file.getInputStream(); Wor ...
- sql-SQL Prompt
本人用的是win10系统,这里也着重介绍win10系统的激活方式 激活方式: 1.首先系统HOSTS文件添加以下屏蔽网络 127.0.0.1 red-gate.com 127.0.0.1 www.re ...
- linux挂载文件服务器
smbclient -L //192.168.1.1/ -U administrator //直接挂载 使用下面这条命令就行 sudo mount -t cifs -o username=文件服务器账 ...