java接口 密钥签名作用_api接口签名加密请求(二)

在“api接口签名加密请求,从springmvc4项目搭建开始”篇文章,讲述了使用java springmvc搭建api接口请求例子。为了方便php能调用,接着写了php的demo例子。

回顾上回

api接口设计方式和思路

1、公开性

接口是公网可访问的,不希望被随便请求,需要token签名认证才能调用,接口提供方提供接口密钥。

2、安全性

模拟支付宝接口签名方式签名,请求参数按照key=value&key=value方式拼接的未签名原始字符串(含时间戳),再对原始字符串进行签名(加密钥)。如:md5(id=1×tamp=1514020967 + 密钥)

3、模式性

请求

请求参数 + 时间戳 + 签名(请求参数+时间戳+密钥)

接收

md5(接收参数(去除签名) + 密钥) == 接收参数(签名)

后再比较 接收参数(时间戳) 跟 当前系统时间戳 的时效性

签名请求函数/** 密钥 */

define("KEY","weizhixi");

/** 模拟post */

function curl_post($url, $params){

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_HEADER, 0);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type:application/x-www-form-urlencoded; charset=utf-8']);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');

curl_setopt($curl, CURLOPT_POSTFIELDS,  $params);

curl_setopt($curl, CU

你可能感兴趣的:(java接口,密钥签名作用)